21

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

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

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

谢谢。

4

4 回答 4

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>
于 2013-03-28T14:03:42.787 回答
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 转换 VS 2010

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

于 2013-03-28T14:06:49.270 回答
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
于 2017-06-23T10:23:39.170 回答
0

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

于 2017-09-12T09:55:18.533 回答