c# – 每个团队成员和分支的* .csproj / * .config设置不同

这个问题是一对一的,但两者都与同一个问题有关.

我们是10个开发人员的团队,一些开发人员更喜欢使用IIS的完整实例,而其他开发人员更喜欢使用IIS-Express.使用例如IIS最为类似于生产的优点是有优点的,而IIS-Express允许编辑和继续调试.

除了10个开发人员工作团队,我们正在使用源代码管理,我们有一个分支结构.每个分支可能具有不同的web.config / app.config设置,如数据库连接字符串.开发人员可能正在一个分支机构上工作,因此我们通常每个分支机构都有一个数据库,我们正在寻找具有本地数据库的开发人员,但无论采用哪种方法,命名冲突仍然是一个问题(即开发人员可能有2个本地数据库,每个分支一个).

第一个问题是与csproj文件,特别是Web服务器设置.如果一个开发人员检查使用IIS-Express的csproj文件,另一个开发人员执行“获取最新”,则它将覆盖其配置,浪费时间和创造挫败感.

当然,最简单的解决方案是强制每个人都使用一个工具,一个配置,但是我宁愿不这样做,特别是对于没有影响输出(编译代码)的东西.

第二个问题是配置文件,配置文件存储在源代码控制(就像任何其他文件),所以当我们进行分支合并时,这些文件必须手动更新.我知道配置文件有调试和释放转换,我们可以在两个连接字符串中都有不同的连接字符串,但这并不能解决两个开发人员可能在同一个分支上工作但使用不同连接字符串的问题.

明显的解决方案是每个人都有完全相同的设置,但是一些开发人员可能希望使用LocalDB实例,其他人可能希望使用SQL-Express,而分段服务器使用一个完整的SQLServer实例.同样,这是另一个最终结果没有任何影响的环境.

我没有看到任何解决我的特殊问题,关于管理团队成员之间的配置,以及分支/合并之间.

特别是对于Web服务器,VS有一个“将服务器设置应用于所有用户(存储在项目文件中)”的复选框 – 如果未选中,则该设置存储在本地.csproj.user文件中,因此每个人都可以在其中设置自己的设置.

对于连接字符串,您可以在每个机器上(而不是源代码控制)中有一个“user.config”文件,开发人员可以在其中放置连接字符串.主配置文件可以加载该文件以获取连接字符串.有几种方法可以做到这一点,但是我已经尝试过:

App.config or Web.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings configSource="user.config"></connectionStrings>
</configuration>

user.config:
<connectionStrings>
  <add name="test" connectionString="Server=.;Database=...;"/>
</connectionStrings>

如果是Windows应用程序,您可以在user.config文件中设置“复制到输出目录”属性,以便Visual Studio将其复制到您的bin目录.

翻译自:https://stackoverflow.com/questions/15646415/different-csproj-config-settings-for-each-team-member-and-branch

转载注明原文:c# – 每个团队成员和分支的* .csproj / * .config设置不同