私はいくつかのプロジェクトで解決策を持っています。
メインプロジェクトのアセンブリのバージョンはビルド後のイベントで検査され、そのバージョンに関連付けられたリリースノートがTrac RSSから抽出され、アプリケーションに付属するXMLファイルとして保存されます。これは、ビルド後のイベントで行われます。
メインアセンブリのプロジェクトのビルド後のイベント:
Powershell -File "$(SolutionDir)scripts\makereleasenotes.ps1" $(TargetPath) $(ProjectDir)
これはVSで正常に機能します。
ただし、デプロイメントをビルドするときは、他の多くのステップが発生するため、ダブルクリックから実行されるコマンドラインmsbuildがあり、これにより、デプロイメントがビルドおよびパッケージ化されます。
このプロセスから実行すると、ビルド後のステップが実行されていないように見えます。
これは、私たちが使用するコマンドスクリプトです。
set app_main=%CD%
msbuild app.msbuild /target:Release;Cleanup
app.msbuildには、他のターゲットを含むターゲットがあります。
<Target Name="Release" DependsOnTargets="CreateDir;BuildRelease;CopyFiles"/>
と:
<Target Name="BuildRelease" >
<MSBuild Projects="App.Web.Application.sln" Properties="Platform=$(Platform);Configuration=Release;
OutDir=$(ReleaseDir)\$(DTResult)\$(ReleaseConfiguration)\"
Targets="Clean;Rebuild">
<Output ItemName ="OutputFiles" TaskParameter="TargetOutputs"/>
</MSBuild>
etc.
したがって、外部のmsbuildスクリプトがソリューションに委任されており、ビルドでコンパイルされている個々のプロジェクトがないことがわかります。
従属プロジェクトのビルド後スクリプトは、msbuildスクリプトでソリューションがターゲットとして設定されたときに実行されることになっていますか?
もしそうなら、私の実行を停止しているのは何ですか?
そうでない場合は、個別に実行し、プロジェクトレベルのマクロ(PowerShellスクリプトがアセンブリを検査してリリースノートXMLを書き出すために使用している)に同等のパラメーターを提供する必要があると思いますか?