我有一个在Team Foundation构建上运行的msbuild脚本。构建中的一个项目是clickOnce应用程序。到目前为止,我已经研究了如何让脚本将项目发布到正确的位置,但我无法设置应用程序版本的单击。
我使用msbuildcommunitytasks中的TFSVersion任务设置版本这似乎工作正常我可以看到我的版本号更新。问题似乎是当我们进入CompileConfiguration和publish部分时,这个版本号被重置回初始值。如何传播此值?
当我进入BeforeCompile时,修订版与我的变更集匹配,但是当我到达BeforeCompileConfiguration时,修订版又回到了0。
以下是剧本要点:
<PropertyGroup>
<CustomizablePublishDir>true</CustomizablePublishDir>
<SkipLabel>true</SkipLabel>
<!-- Version Settings -->
<Major>2</Major>
<Minor>12</Minor>
<Build>0</Build>
<Revision>0</Revision>
<GetDependsOn>
$(GetDependsOn);
Version
</GetDependsOn>
</PropertyGroup>
<ItemGroup>
<SolutionToBuild Include="$(BuildProjectFolderPath)/../../AutoBuildTest/AutoBuildTest.sln" />
<SolutionToPublish Include="@(SolutionToBuild)" >
<Properties>
PublishDir=\\DeployServer\Deploy\AutoBuildTest\;
MinimumRequiredVersion=$(Major).$(Minor).0.0;
ApplicationVersion=$(Major).$(Minor).$(Build).$(Revision)
</Properties>
</SolutionToPublish>
</ItemGroup>
<Target Name="Version">
<Message Importance="high" Text="Updating Version: $(Major).$(Minor).$(Build).$(Revision)"/>
<TfsVersion LocalPath="$(SolutionRoot)">
<Output TaskParameter="Changeset" PropertyName="Revision"/>
</TfsVersion>
<Time Format="ddMM">
<Output TaskParameter="FormattedTime" PropertyName="Build" />
</Time>
<Message Importance="high" Text="New Version: $(Major).$(Minor).$(Build).$(Revision)"/>
</Target>
答案 0 :(得分:1)
这可能是因为SolutionToBuild项目组填充了值0,因此属性接收$(Revision)
的值。
您可以尝试重写BeforeCompileConfiguration,以便在版本号更新后而不是在脚本开头时动态包含该解决方案,如下所示:
<Target Name="BeforeCompileConfiguration">
<ItemGroup>
<SolutionToPublish Include="@(SolutionToBuild)" >
<Properties>
PublishDir=\\DeployServer\Deploy\AutoBuildTest\;
MinimumRequiredVersion=$(Major).$(Minor).0.0;
ApplicationVersion=$(Major).$(Minor).$(Build).$(Revision)
</Properties>
</SolutionToPublish>
</ItemGroup>
</Target>