我们正在开发一个Windows 8 Metro应用程序,并且正确设置它以在每次登记我们的登台分支时创建新的ARM和x86应用程序包。
但是,问题是程序包创建过程不断给它提供1.0.0.0的版本。这使得无法在已安装应用程序的平板电脑和计算机上安装软件包,因为它看到它安装的版本相同但实际应用程序不同。
我尝试将AssemblyVersion
设置为1.0.*
,但由于程序集版本和程序包版本完全不同(很糟糕),如何让TFS团队构建自动设置程序包版本那么可以在Windows 8系统上安装新版本吗?
答案 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>
现在输出文件应该具有您定义的版本号。