如何使用 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 程序集版本)

如何使用 MSBuild 脚本确定生成源

  1. 基于计算机名称创建属性。
  2. 使用该属性更新之前的程序集信息.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'(&quot;('d+)'.('d+)'.('d+)'.('d+)"
ReplacementText="AssemblyFileVersion(&quot;$1.$2.$(MyCustomProperty001).$(SubVersionRevision)" />