我们有两个用于测试和生产的代码库。这两个代码库之间的唯一区别在于两个文件:
- 配置文件
- 构建文件 (.csproj)
维护两个分支是一项相当大的工作,可以通过将代码库合并为一个并使用持续集成(例如 Hudson,例如)根据目标环境修改文件来消除。
从 VS2010 开始,配置文件有一个非常智能的解决方案,它允许我们为两个构建配置“Release-Test”和“Release-Prod”定义不同的配置文件转换。
但是,我们有一些差异反映在项目文件 (.csproj) 中,例如:
- 生成的程序集的名称:Foo.exe 与 Foo-Test.exe。
- 汇编版本。
- ClickOnce 部署设置。
有没有什么聪明的方法可以根据构建配置转换 csproj 文件,或者如何将这些设置提取到配置文件或 C# 代码中?
更新:
我尝试按照@JaredPar 的建议在 csproj 文件中使用条件 MSBuild 属性,但它有一些注意事项(有关详细信息,请参阅我的评论)。还有其他方法可以实现这一目标吗?