我正在使用 MSBuild 和 MSBuild Extensions我正在寻找一种方法来确定我的构建在哪台机器上进行。
我想根据这个修改我们版本号的一部分,这样开发人员就可以判断构建是在开发机器、生产构建箱等上进行的。等
我认为使用 $(COMPUTERNAME) 是一个好的开始,但我该如何进行比较?
示例:
3.2.0.416 -> 0 会告诉我们该构建是一个非官方的开发构建。
3.2.1.417 -> 1 会告诉我们这个版本是在我们的 QA CI 机器上生成的。
谁能指出我正确的方向?我发现这篇文章是一个很好的起点 ( Setting .NET Assembly Version with Jenkins and TFS )
最佳答案
- 根据 MachineName 创建一个属性。
- 使用该属性在之前更新 AssemblyInfo.cs 文件 build 。
我在下面有“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)" />
关于c# - 如何使用 MSBuild 脚本确定构建来源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19320958/