4

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 ファイルには以前と同様にデフォルトのリビジョンが残っています。

4

2 に答える 2

2

ここでこれを解決しました:リビジョン番号を上書きする方法

結局、ビルド中に各プロジェクトの AssemblyInfo ファイルを実際に更新する必要がありました。そのため、ビルド サーバー (TeamCity) では、必要なコードを Microsoft.Common.targets ファイルに配置して、各プロジェクト広告で必要にならないようにし、リリース番号と TeamCity ビルド番号を各ビルド タスクに渡しました。

于 2013-06-28T08:18:06.607 に答える
0

Revision は、Automatic に設定した 2000 年 1 月 1 日からの日数です。必要に応じて、独自の "StartDate" を指定できます。

于 2013-06-26T15:40:25.500 に答える