msbuildなどを使用して、現在のビルドに変更があるプロジェクトを検出し、それらのプロジェクトについてのみAssemblyInfo.csのFileAssemblyVersion属性を更新する方法はありますか?
1 に答える
インクリメンタル [get and] コンパイルをセットアップしたと仮定すると、次のステップは MSBuild シーケンスにフックすることです。でご覧くださいFrameworkDir\Microsoft.Common.Targets
。問題は、物事がこのように機能するように設定されていないことです-何かがコンパイルされるかどうかをアプリオリに判断できないことを示すステップ_TimestampBeforeCompile
があるという事実です。_TimeStampAfterCompile
理論的には [言語固有の] CoreCompile [たとえば、Microsoft.CSharp.targets] の前にフックすることもできますが、問題はInputs
、それが起こるかどうかを判断するために、それと同じものを用意する必要があることです。これは、多くのカット アンド ペーストと、システム ファイルとの同期を維持することを意味します。他に注意すべきことは、_ComputeNonExistentFileProperty
ターゲットの上部にあるコメントに記載されています。
_TimeStampAfterCompile
したがって、シーケンスにいくつかの非常に深い変更を加える以外に (たとえば、コンパイルが行われたことをあなたのカスタムが検出した場合に 2 回目のコンパイルを強制する「ビルド後」ビットをフックするなど)、簡単で、推奨またはサポートされている方法。
そうは言っても、AssemblyFileVersion
(FileAssemblyVersion
存在しない :P を参照)は、コンパイル後に単なるリソースとして簡単に変更できます-そのためのツールが見つかります。しかし、あなたは本当にそれと の両方を行うことについて話していると思います。AssemblyVersion
これは、事後に同じように微調整することはできません。