使用Continuous Integration可以修改.NET项目文件

本文关键字:修改 NET 项目文件 Continuous Integration 使用 | 更新日期: 2023-09-27 18:29:12

我们有两个用于测试和生产的代码库。这两个代码库之间的唯一区别在于两个文件:

  • 配置文件
  • 生成文件(.csproj)

维护两个分支是一项相当大的工作,可以通过将代码库合并为一个代码库并使用连续集成(如Hudson)根据目标环境修改文件来消除这项工作。

从VS2010开始,有一个非常智能的配置文件解决方案,允许我们为两个构建配置"Release Test"answers"Release Prod"定义不同的配置文件转换。

然而,我们有一些差异反映在项目文件(.csproj)中,例如:

  • 生成的程序集的名称:Foo.exe与Foo-Test.exe
  • 程序集版本
  • ClickOnce部署设置

有没有什么聪明的方法可以根据构建配置转换csproj文件,或者如何将这些设置提取到配置文件或C#代码中?

更新:

按照@JaredPar的建议,我尝试在csproj文件中使用条件MSBuild属性,但它有几个注意事项(有关详细信息,请参阅我的注释)。还有其他方法可以做到这一点吗?

使用Continuous Integration可以修改.NET项目文件

听起来您想要使用单个csproj和基于特定构建配置的控制元素(如程序集名称)。如果是,那么您正在MSBuild属性上查找Conditional元素

<AssemblyName Condition="'$(Configuration)' == 'Release-Prod'">Foo</AssemblyName>
<AssemblyName Condition="'$(Configuration)' == 'Release-Test'">Foo-Test</AssemblyName>