【问题标题】:How to manage multiple web.config files in a ASP.NET website project?如何管理 ASP.NET 网站项目中的多个 web.config 文件?
【发布时间】:2012-12-24 09:59:06
【问题描述】:

过去几个小时我一直在寻找解决日益严重的问题的最佳方法:

  • 我们有越来越多的网站(在 VS 2010 中),因此需要管理的 web.config 文件也越来越多。 dev 和 prod 环境之间有很多差异(连接字符串、跟踪/电子邮件配置等)。
  • 此外,根据某人所在的团队(例如:网页设计团队),他无法访问某些密码和加密密钥(位于 web.config 文件中)。

目前我们有:

  • 包含 prod 值(连接字符串、密码)的 web.config 文件。
  • 包含 dev 值的 web.config.dev 文件。
  • 一个 web.config.restricted 文件,其中包含允许网页设计师完成工作所需的最低值。

因此:

  • 每次开发人员想要在 web.config 文件中添加新行时,他还需要将该行插入到 web.config.dev 文件(最终是 web.config.restricted 文件)中。
  • 入住后:
    • dev 团队的所有成员都必须复制 web.config.dev 文件中的所有内容并覆盖他们的 web.config 文件。
    • 网页设计团队的所有成员都必须复制 web.config.restricted 文件中的所有内容并覆盖他们的 web.config 文件。
  • 这些手动操作会引发大量错误(人们忘记反映所有文件中的更改)。
  • 必须将 TFS 配置为不允许 Web 设计团队访问 web.config 文件(他们必须手动创建文件)。

我正在寻找更少的hacky 方式来:

  • 无需复制所有 web.config 文件内容即可管理多个环境 (dev/prod)。
  • 管理 TFS 权限以便对某些团队隐藏一些敏感值。

注意:

  • 我正在使用网站项目(不是 Web 应用程序),因此无法使用 web.config 转换。
  • 似乎 Web 部署项目在 VS 2012 中将不再可用,所以我宁愿避免现在开始使用它。
  • Publishing Profiles 可能是一个很好的解决方案,但我们仍在使用 VS 2010。

我确信不是第一个遇到此问题的人。我很想知道人们是如何处理这个问题的:)

【问题讨论】:

  • 仅供参考,您似乎找到了一个很好的理由不使用网站“项目”。

标签: asp.net visual-studio-2010 web-config web-site-project


【解决方案1】:

对于安装在计算机上的每个版本的 .NET Framework,您都会获得计算机级别的 web.configmachine.config 文件。对于您计划使用的每个框架版本,您可以将所有特定于环境的值(例如连接字符串)放入这些文件中。

例如,在您的开发机器中,将您的连接字符串或 appSettings 值放入 C:\Windows\Microsoft.NET\Framework64\v4.0.3031\CONFIG\machine.config(或您的确切版本)中,并对生产中的不同值执行相同操作。配置文件继承,因此您无需在代码中做任何不同的事情。

但是,这将要求每个开发人员设置适当的机器级配置文件。这可能会指向您的开发环境,甚至是开发者机器上的本地路径。

【讨论】:

  • 我不知道这些文件的存在。它可以用来定义一些稳定的值,比如连接字符串。感谢您的提示!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多