每个开发人员的私有 web.config

uri*_*rig 1 .net asp.net web-config visual-studio

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

“私有”是指开发人员可以在任何给定时刻自由更改文件以满足他们的开发/测试需求,而不会影响其他团队成员,也不会以源代码控制结束。

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

到目前为止,我最接近的解决方案是拥有一个“私有”解决方案配置,其中包含从源代码管理中排除的匹配Web.config 转换文件(“web.private.config”)。

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

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

湾 转换的结果最终出现在主“web.config”文件中,该文件自然包含在源代码管理中。

Jps*_*psy 6

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

在这种情况下,通过包含外部文件configSource被证明是有问题的,因为该属性完全取代了 <appSettings> 节点。因此,仍然无法为所有开发人员保留全局键/值和个人键/值。整个部分被包含的私有文件完全取代。

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

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

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

­

<!-- 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 >
Run Code Online (Sandbox Code Playgroud)

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

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

请记住:
虽然configSource适用于 Web.config 中的所有节点,但该file属性仅限于 <appSettings>。