asp.net - 如何管理 ASP.NET 网站项目中的多个 web.config 文件?

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

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

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

目前我们有:

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

因此:

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

我正在看较少的hacky方式:

  • 管理多个环境(开发/产品),而无需复制所有 web.config 文件内容。
  • 管理 TFS 权限,以便向某些团队隐藏一些敏感值。

请注意:

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

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

最佳答案

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

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

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

关于asp.net - 如何管理 ASP.NET 网站项目中的多个 web.config 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14250733/

相关文章:

asp.net - 如何在 ASP.Net Gridview 中添加 "confirm delete"选项?

asp.net - 将WebMatrix项目迁移到VS2010

c++ - 使用 __stdcall 和 Boost 1.47.0 编译错误 log4cxx

mysql - 如何在开发和生产中使用两个连接字符串

c# - 通过 C# 代码更新 web.config

asp.net - 需要在asp.net中以分钟为单位找到音频文件的长度

c# - 如何从 Postman 获取表单数据到 WebApi

asp.net - 如何在 RDLC 报告中使用舍入函数时删除小数点后的零?

c++ - “已在 .obj 中定义”错误,Visual Studio C++?

c# - 在 web.config 中设置多个 SMTP 设置?