如何从TFS自动增加Team Builds上的Windows商店包版本?

时间:2013-06-27 15:28:14

标签: windows-8 tfs continuous-integration team-build

我们正在开发一个Windows 8 Metro应用程序,并且正确设置它以在每次登记我们的登台分支时创建新的ARM和x86应用程序包。

但是,问题是程序包创建过程不断给它提供1.0.0.0的版本。这使得无法在已安装应用程序的平板电脑和计算机上安装软件包,因为它看到它安装的版本相同但实际应用程序不同。

我尝试将AssemblyVersion设置为1.0.*,但由于程序集版本和程序包版本完全不同(很糟糕),如何让TFS团队构建自动设置程序包版本那么可以在Windows 8系统上安装新版本吗?

1 个答案:

答案 0 :(得分:1)

我不熟悉Win 8应用程序,但设置程序集版本应该与普通.Net相同。我想。我们每次都在构建中设置版本,而Revision与用于构建的实际变更集相同。这样一来,如果有人检查了Project Collection中的任何内容,它会自动增加。 第一步是获取变更集编号并设置其他版本:

<PropertyGroup>
 <incMajorVersion>6</incMajorVersion>
 <incMinorVersion>1</incMinorVersion>
 <incBuildNumber>3</incBuildNumber>
 <incRevision>$(SourceGetVersion.Replace("C",""))</incRevision>
</PropertyGroup>

下一步是查找程序集文件并将版本更改为指定的版本。为此,在Extensionpack(http://www.msbuildextensionpack.com/help/4.0.5.0/Index.html)中使用MSBuild任务。现在我们必须导入任务文件,找到程序集文件并进行更改。这需要在发生任何其他事情之前完成,因此我们覆盖AfterGet目标:

<Import Project="C:\Program Files (x86)\MSBuild\ExtensionPack\4.0\MSBuild.ExtensionPack.tasks"/>

<Target Name="AfterGet" DependsOnTargets="$(AfterGetDependsOn)">
 <ItemGroup>
  <AssemblyInfoFiles Include="$(BuildDirectory)\**\AssemblyInfo.cs"/>
 </ItemGroup>

 <MSBuild.ExtensionPack.Framework.AssemblyInfo
  AssemblyInfoFiles="@(AssemblyInfoFiles)"
  AssemblyMajorVersion="$(incMajorVersion)"
  AssemblyMinorVersion="$(incMinorVersion)"
  AssemblyBuildNumber="$(incBuildNumber)"
  AssemblyRevision="$(incRevision)"
  AssemblyFileMajorVersion="$(incMajorVersion)"
  AssemblyFileMinorVersion="$(incMinorVersion)"
  AssemblyFileBuildNumber="$(incBuildNumber)"
  AssemblyFileRevision="$(incRevision)" />
</Target>

现在输出文件应该具有您定义的版本号。