MSBuild Community Tasks の VersionTask を使用して、リビジョン計算タイプを設定したいと考えています。ただし、csproj ファイル内で実際にタスクを接続する方法を理解するのに苦労しています。
プロジェクトには、次の属性が定義されている AssemblyInfo.cs があります。
[assembly: AssemblyVersion("3.2.5.*")]
私がやりたいことは、独自のカスタム処理でリビジョン番号処理の生成をオーバーライドすることです。
次のように、カスタマイズしたバージョン タスクを csproj ファイルに入れました。
<UsingTask TaskName="MyCo.Build.Tasks.Version" AssemblyFile="$(SolutionDir)\..\Build\.build\MyCo.Build.Tasks.dll" />
次に、実際のタスクは次のように呼び出されます。
<Target Name="BeforeBuild">
<Message Text="Setting Revision Number to $(BuildNumber)" />
<MyCo.Build.Tasks.Version RevisionType="BuildServerNumber" Revision="$(BuildNumber)" /></Target>
メッセージ タスクが原因でターゲットの BeforeBuild が呼び出されていることがわかりますが、exe ファイルには次のように標準で生成された番号が付けられています: ファイル バージョン: 3.2.5.27547
3.2.5.111 (パラメーターとして MSBuild に渡されるビルド番号) のようなものを期待していました。
Version タスクは Revision の '*' 値の既定の処理をオーバーライドしているため、AssemblyInfo.cs ファイルを実際に変更する必要はないと思います。
バージョン タスクからの出力値を MSBuild パラメーターに渡す必要がありますか? AssemblyVersion タスクを実際に使用してファイル内の値を更新する必要がありますか?
明らかに、AssemblyInfo.cs を変更する必要がないようにしようとしています。バージョン番号の処理をオーバーライドしたいだけです。
誰かアドバイスしてもらえますか?
編集: インストーラーの chm ファイルで次の使用例を見つけたところ、私の質問に部分的に答えています。
<Version BuildType="Automatic" RevisionType="Automatic" Major="1" Minor="3" >
<Output TaskParameter="Major" PropertyName="Major" />
<Output TaskParameter="Minor" PropertyName="Minor" />
<Output TaskParameter="Build" PropertyName="Build" />
<Output TaskParameter="Revision" PropertyName="Revision" />
</Version>
<Message Text="Version: $(Major).$(Minor).$(Build).$(Revision)"/>
ただし、ビルドを実行すると、生成されたアセンブリ バージョンをメッセージ タスクに出力できますが、exe ファイルには以前と同様にデフォルトのリビジョンが残っています。