每个开发人员

时间:2016-11-24 09:35:58

标签: asp.net .net visual-studio web-config

考虑一组开发ASP.net Web应用程序的开发人员。每个开发人员都希望拥有web.config的私有版本。

通过"私人"我的意思是开发人员可以在任何特定时刻自由更改文件以满足他们的开发/测试需求,而不会影响其他团队成员并且不会在源代码管理中结束。

如何使用Visual Studio 2015实现这一目标?

到目前为止,我最接近的解决方案是拥有一个私人" Solution Configuration具有匹配的Web.config Transformation文件(" web.private.config"),这些文件已从源代码管理中排除。

但这不是一个令人满意的解决方案,因为:

一个。调试时不会自动运行转换(使用F5)。开发人员需要记住手动运行它。

湾转换的结果最终出现在主要的" web.config"文件当然包含在源代码管理中。

4 个答案:

答案 0 :(得分:2)

我们有一个非常相似的问题,但是只需要 Web.config 部分的个性化版本。

在这种情况下,通过configSource包含外部文件被证明是有问题的,因为此属性完全替换 -节点。因此,没有办法为所有开发人员保留全局键/值和个人键/值。整个部分完全由包含的私有文件代替。

我们需要的是 全局和私有的。我们找到的解决方案是file属性。它允许合并 Web.config设置与其他文件中的设置。

我们最终得到了一个像这样的结构:

<!-- Web.config with global appSettings) -->
...
<appSettings file="Web.PERSONAL.config">
    <add key="BaseUrl" value="https://projectname.dev.local" />
    ...
</appSettings>
...

­

<!-- Web.PERSONAL.config with personal appSettings -->
<?xml version="1.0" encoding="utf-8"?>
<appSettings >
  <add key="EmailSmtpUser" value="my.name@my.domain.com" />
  <add key="EmailSmtpPwd" value="***" />
</appSettings >

如果在两个文件中都放入相同的密钥,则 Web.PERSONAL.config 版本将覆盖 Web.config 版本。

必须通过.gitignore将文件 Web.PERSONAL.config 从Git中排除。

请紧记:
尽管configSource适用于Web.config中的所有节点,但是file属性仅限于

答案 1 :(得分:1)

正确答案是将本地开发站点托管在与Visual Studio解决方案不同的位置。然后,您可以使用publish profiles发布对该位置的更改,并web.config transforms为每个开发人员维护单独的本地配置。每个开发人员都将使用不同的发布配置文件,该配置文件使用自己的转换转换web.config,并将转换后的web.config部署到发布位置。然后,您可以使用Visual Studio的Debug&gt;将调试器附加到已发布的站点。附加到处理选项。

答案 2 :(得分:1)

我认为标准化开发环境有很多价值,因此可以下载解决方案并运行它。

自定义,长期/永久,特定于开发人员的配置迟早会导致一个微妙的错误,很难找到。

我对您的问题的解决方案是找出需要永久性个人配置的原因,并查看是否可以消除这些特定于环境的差异。

答案 3 :(得分:1)

让web.config包含外部文件(通过configSource)并将该文件添加到.gitignore