我需要根据环境变量更改 web.config 文件中的连接字符串(针对不同的环境,如开发/暂存/生产等)。我见过其他使用构建任务来完成更改不同配置的解决方案,但无法找到可以让我根据环境变量更改连接字符串的东西。有谁知道有什么方法可以做到这一点吗?
最佳答案
我们在 web.config 中使用 appSettings 和 connectionStrings 元素的 configSource 属性。
基本上,我们的所有环境都有相同的 web.config 文件:开发、质量保证和生产。
然后我们利用单独的“环境特定”文件......例如......
在 web.config 中:
<?xml version="1.0"?>
<configuration>
<appSettings configSource="local.appsettings.config" />
<connectionStrings configSource="local.connectionstrings.config" />
</configuration>
然后我们维护以下文件:
local.appsettings.config.development
local.appsettings.config.qa
local.appsettings.config.production
local.connectionstrings.config.development
local.connectionstrings.config.qa
local.connectionstrings.config.production
由于我们在部署之前预编译了所有 ASP.NET 应用程序,因此我们的 CI 解决方案使用了一个自定义 msBuild 任务,该任务将正确的配置文件(基于目标环境)复制到正确的 .config 文件...
所以,如果我们要部署到开发环境,local.appsettings.config.development -> local.appsettings.config
如果我们要部署到 qa,则 local.appsettings.config.qa -> local.appsettings.config
这使我们能够在所有环境中保持核心 web.config 相同。
关于asp.net - 根据 ASP.NET 中的环境变量更改 web.config 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1140367/