1

我们现在正在开发一个 Windows 8 Metro 应用程序,并对其进行正确设置,以便在每次签入我们的暂存分支时创建新的 ARM 和 x86 应用程序包。

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

我尝试将 to 设置AssemblyVersion1.0.*,但由于程序集版本和包版本完全不同(这很糟糕),我怎样才能让 TFS 团队构建在构建时自动设置包版本,以便可以在 Windows 8 系统上安装新版本?

4

1 回答 1

1

我对 Win 8 应用程序不熟悉,但我猜设置程序集版本应该与普通 .Net 相同。我们每次在构建中设置版本,而修订版与用于构建的实际变更集相同。这样,如果有人签入项目集合中的任何内容,它将自动增加。第一步是获取变更集编号并设置其他版本:

<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>

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

于 2013-07-03T10:31:05.197 回答