如何使用转换语法更改web.config设置?

时间:2013-03-28 14:00:18

标签: asp.net web-config config-transformation

我的web.config文件中存储了一个值,我希望在网站发布时更改该值。我想将它从TEST更改为LIVE。

<appSettings>
    <add key="RequestMode" value="TEST" />
    // other keys here
</appSettings>

这是否可以使用web.config转换语法?如果是这样,怎么样?

感谢。

4 个答案:

答案 0 :(得分:45)

是的,这可以通过转换语法实现。这种转变应该可以解决问题:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <appSettings>
    <add key="RequestMode" value="LIVE" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
  </appSettings>
</configuration>

答案 1 :(得分:1)

使用Visual Studio 2010可以开箱即用。唯一需要注意的是,当您使用其中的“发布”工具时,此过程将在Visual Studio中运行。您将无法从MSBuild获得此转换(这会妨碍自动构建)。

<appSettings xdt:Transform="Replace">  <add key="ProdKeyA" value="ProdValA"/>  <add key="ProdKeyB" value="ProdValB"/>  <add key="ProdKeyC" value="ProdValC"/></appSettings>

来源:Web.Config Transformations VS 2010

还要确保您的Web.Config.XXXX转换文件与您的构建定义匹配。例如,默认情况下支持调试和发布,因此您需要使用Web.Config.Release在发布模式下发布时调整Web.Config。

答案 2 :(得分:0)

我在http://mundrisoft.com/tech-bytes/web-config-transformation-for-project-deployment/找到了以下代码,该代码正常运行:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="MyDB" 
      connectionString="ReleaseSQLServer" 
      xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
</configuration

答案 3 :(得分:0)

您还可以使用CTT工具执行网络转换CTT Website 然后,您可以在发布文件之后,在部署之前使用powershell转换Web配置(保留转换文件),然后在部署期间只更改名称