如何使用 MSBuild 脚本确定生成源
本文关键字:何使用 MSBuild 脚本 | 更新日期: 2023-09-27 18:35:10
我正在使用MSBuild和MSBuild扩展,我正在寻找一种方法来确定我的构建是在哪台机器上进行的。
我想基于此修改部分版本号,以便开发人员可以判断构建是在开发机器、生产构建盒等上进行的。
我认为使用 $(计算机名)将是一个好的开始,但我该如何进行比较?
例:
3.2.0.416 -> 0 会告诉我们该版本是非官方的开发版本。
3.2.1.417 -> 1 会告诉我们这个构建是在我们的 QA CI 盒子上生成的。
谁能指出我正确的方向?我发现这篇文章是一个很好的起点(使用 Jenkins 和 TFS 设置 .NET 程序集版本)
- 基于计算机名称创建属性。
- 使用该属性更新之前的程序集信息.cs文件建筑。
我在下面有"SubVersionRevision",但只需使用替代语法来获取TFS版本(来自原始帖子中的链接)。
解决方案的关键是:设置和使用"MyCustomProperty001"
<Choose>
<When Condition=" '$(Computername)'=='MyDevMachine' ">
<PropertyGroup>
<MyCustomProperty001>0</MyCustomProperty001>
</PropertyGroup>
</When>
<When Condition=" '$(Computername)'=='MyQaMachine' ">
<PropertyGroup>
<MyCustomProperty001>1</MyCustomProperty001>
</PropertyGroup>
</When>
<Otherwise>
<PropertyGroup>
<MyCustomProperty001>9</MyCustomProperty001>
</PropertyGroup>
</Otherwise>
</Choose>
<ItemGroup>
<AssemblyInfoFiles Include="$(ProjectDir)'**'*AssemblyInfo.cs" />
</ItemGroup>
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="$(SVNToolPath)">
<Output TaskParameter="Revision" PropertyName="MySubVersionRevision" />
</SvnVersion>
<FileUpdate Files="@(AssemblyInfoFiles)"
Regex="AssemblyFileVersion'("('d+)'.('d+)'.('d+)'.('d+)"
ReplacementText="AssemblyFileVersion("$1.$2.$(MyCustomProperty001).$(SubVersionRevision)" />