不同的*.Csproj / *.每个团队成员和分支的配置设置
本文关键字:成员 分支 配置 团队 设置 Csproj | 更新日期: 2023-09-27 18:06:12
这个问题有点合二为一,但它们都涉及同一个问题。
我们是一个由10名开发人员组成的团队,一些开发人员更喜欢使用IIS的完整实例,而另一些开发人员更喜欢使用IIS- express。使用两者都有优点,例如,IIS与生产环境最相似,而IIS- express允许编辑并继续调试。
除了10个开发人员的工作团队,我们正在使用源代码控制,我们有一个分支结构。每个分支可能有不同的网。Config/app.config设置,如数据库连接字符串。一个开发人员可能一次在多个分支上工作,所以我们通常每个分支有一个数据库,我们看到开发人员有本地数据库,但命名冲突仍然是一个问题,无论采用哪种方法(即开发人员可能有两个本地数据库,每个分支一个)。
第一个问题是关于csproj文件的问题,特别是关于web服务器设置的问题。如果一个开发人员签入使用IIS-Express的csproj文件,而另一个开发人员执行Get Latest,它将覆盖他们的配置,浪费时间并造成挫折。
当然,最简单的解决方案是强迫每个人使用一个工具,一个配置,但我宁愿不这样做,特别是对于一些与结果输出(编译代码)无关的东西。
第二个问题是配置文件,配置文件存储在源代码控制中(就像任何其他文件一样),所以当我们进行分支合并时,这些文件必须在之后手动更新。我知道配置文件有调试和发布转换,我们可以在两者中有不同的连接字符串,但这并不能解决两个单独的开发人员可能在同一分支上工作但使用不同的连接字符串的问题。
显而易见的解决方案是每个人都有完全相同的设置,但是一些开发人员可能希望使用LocalDB实例,另一些开发人员可能希望使用SQL-Express,而登台服务器使用完整的SQLServer实例。同样,这是另一个与最终结果无关的设置。
关于管理团队成员之间的配置,以及分支/合并之间的配置,我还没有看到任何解决方案。
特别对于web服务器,VS有一个复选框"将服务器设置应用到所有用户(存储在项目文件中)"-如果未选中,则设置存储在本地的.csproj中。用户文件,这样每个人都可以在那里有自己的设置。
对于连接字符串,您可以使用"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应用程序,你应该在用户上设置"复制到输出目录"属性。
如果我正确理解你的问题,你基本上想排除你的app.config/web。配置/某些其他文件从检入?出于某种原因,这似乎是一个隐藏的选项…
我们终于找到了类似问题的答案,在解决方案资源管理器中选择。config文件,然后点击(Visual Studio) File
-> Source Control
-> Exclude selection from Source Control
。
这将防止选中的文件被检入并覆盖其他开发人员的文件。
(注意:这在VS2010中工作,我不能保证这个选项在2012中存在)
我有一个类似的问题,我有3个数据库,3个分支,3个环境。
生产服务器==>制片DB ==>Prod分支==>螺杆连接柱测试服务器==>主数据库==>主分支==>主连接串地方发展==>本地DB ==>开发者分支==>开发人员连接字符串…
在.git文件夹中,有git钩子,当你签出一个分支时,你可以把脚本放在那里执行。我有签出后的脚本,每次我签出并为我更新连接字符串,这样我就不用手动更改web了。配置文件:
<标题> !/bin/bash h1> 配置Eval $(git branch | grep ""| sed "s///")sed - e s/{服务器}/服务器/g - e s美元美元/{数据库}/数据库/g - e s/{USER}/$ USER/g - e s/{通过}/通过美元/g - e s/{SITE_TYPE}/美元SITE_TYPE/g '
标题>