0

計算されたプロパティ値を TFS proj ファイルから構築中のソリューションの csproj ファイルに渡そうとしていますが、渡される値は常に変更されていません。タスクの順序付けの問題が疑われますが、よくわかりません。sln がプロパティ値を読み取る正確なタイミングは?

私のprojファイルのカットダウンバージョンは次のとおりです。

<PropertyGroup>
  <ProductMajorVersion>4</ProductMajorVersion>
  <ProductMinorVersion>5</ProductMinorVersion>
  <ProductBuildNumber>0</ProductBuildNumber>
  <ProductUpdateVersion>0</ProductUpdateVersion>
</PropertyGroup>

<Target Name="BeforeEndToEndIteration">

   <!-- Calculate changeset number -->
   <MSBuild.Community.Tasks.Tfs.TfsClient ToolPath="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"
                                 Command="history /s:$(TFSPath) /stopafter:1 /format:detailed /version:T $/mobile/main"
                                 Recursive="true">
   <Output TaskParameter="Changeset" PropertyName="ProductBuildNumber"/>
   </MSBuild.Community.Tasks.Tfs.TfsClient>

   <Message Text="TFS ChangeSetNumber: $(ProductBuildNumber)" />

</Target>

<ItemGroup>
  <SolutionToBuild Include="$(BuildProjectFolderPath)/../../Main/BuildAll.sln">
    <Targets></Targets>
    <Properties>ProductMajorVersion=$(ProductMajorVersion);ProductMinorVersion=$(ProductMinorVersion);ProductBuildNumber=$(ProductBuildNumber);ProductUpdateVersion=$(ProductUpdateVersion)</Properties>
  </SolutionToBuild>
</ItemGroup>

メッセージは変更された ProductBuildNumber を正しく出力しますが、私の sln ファイルはまだそれを 0 として読み取ります。

誰でも助けることができますか?

4

1 に答える 1

0

うまくいった!

solutiontobuild 内でプロパティを渡すのは、静的プロパティのみです。動的プロパティはそのように渡す必要はありませんが、代わりに、次のように変更されることをターゲット内で宣言する必要があります。

<Target Name="BeforeEndToEndIteration">

  <!-- modifying code -->

  <PropertyGroup>
    <CustomPropertiesForBuild>$(CustomPropertiesForBuild);ProductBuildNumber=$(ProductBuildNumber)</CustomPropertiesForBuild>
  </PropertyGroup>
</Target>
于 2013-05-28T11:18:41.943 に答える