2

ソリューションをビルドし、変更セット番号を使用してビルドのバージョンを設定する MSBuild *.proj ファイルがあります。
ここで、同じソリューションの 2 つのビルドを作成する必要があります。ただし、最初のバージョンは「5.0.0.{chanset_number}」である必要がありますが、2 番目のバージョンは「2.0.0.{chanset_number}」です。

次のコードを使用して、最新の変更セットをいくつか取得し、ビルドのバージョンを設定します。

<ItemGroup>
  <FilesToVersion Include="$(SolutionRoot)\GUI\Properties\AssemblyInfo.cs" />
</ItemGroup>
<!-- Added for using the latest changeset id as build number -->
<Target Name="BuildNumberOverrideTarget">
  <BuildNumberGenerator>
    <Output TaskParameter="BuildNumber" PropertyName="BuildNumber" />
  </BuildNumberGenerator>
  <GetLatestChangeset>
    <Output TaskParameter="LatestChangeset" PropertyName="LatestChangeset" />
  </GetLatestChangeset>
</Target>
<Target Name="AfterGet" Condition="'$(IsDesktopBuild)'!='true' ">
  <MSBuild.ExtensionPack.VisualStudio.TfsVersion 
     TaskAction="SetVersion" Files="%(FilesToVersion.Identity)"
     Version="$(VersionMajor).$(VersionMinor).$(VersionService).$(LatestChangeset)" 
AssemblyVersion="$(VersionMajor).$(VersionMinor).$(VersionService).$(LatestChangeset)"
SetAssemblyVersion="true" />
</Target>
4

1 に答える 1

1

PropertyGroup を追加すると、ここで役立つ場合があります。

<PropertyGroup>
    <MyVersionMajor Condition="$(MyVersionMajor)==''">$(VersionMajor)</MyVersionMajor>
</PropertyGroup>

これにより、MSBuild パラメーターを介して明示的に設定しない場合、MyVersionMajor というプロパティが VersionMajor プロパティに設定されます。

MyVersionMajor を MSBuild パラメーターとして設定するには、MSBuild コマンドに以下を追加します。

MSBuild.exe <yourprojectfile> /p:MyVersionMajor=2

ビルド ターゲットを変更して、新しいプロパティを含める必要があります。

<Target Name="AfterGet" Condition="'$(IsDesktopBuild)'!='true' ">
  <MSBuild.ExtensionPack.VisualStudio.TfsVersion 
     TaskAction="SetVersion" Files="%(FilesToVersion.Identity)"
     Version="$(MyVersionMajor).$(VersionMinor).$(VersionService).$(LatestChangeset)" 
AssemblyVersion="$(MyVersionMajor).$(VersionMinor).$(VersionService).$(LatestChangeset)"
SetAssemblyVersion="true" />
</Target>

新しいプロパティ グループがこのターゲットの前に表示されるようにします。

取得する必要があるパラメーターを指定せずにこのプロジェクトに対して MSBuild を実行する"5.0.0.{changeset_number}"と、取得するパラメーターを指定すると、"2.0.0.{changeset_number}"

于 2012-10-04T12:13:32.373 に答える