Web.Config 转换不改变任何值

Web.Config Transform not changing any values

我正在尝试设置一个 web.config 转换来修改一些值。我正在使用 Octopus Deploy 给出的这个例子:

http://docs.octopusdeploy.com/display/OD/Configuration+files

超精简版 web.config:

<?xml version="1.0" ?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <system.web>
    <compilation debug="true" targetFramework="4.0">
    </compilation>
  </system.web>
</configuration>

变换:

<?xml version="1.0" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
</configuration>

输出:

<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <system.web>
    <compilation debug="true" targetFramework="4.0">
    </compilation>
  </system.web>
</configuration>

我正在使用这个工具来预览转换: https://webconfigtransformationtester.apphb.com/

如您所见,它什么也没做。我看过很多例子,但显然我遗漏了一些东西。任何帮助将不胜感激。

(我也尝试过但没有成功):

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
      <compilation debug="false" xdt:Transform="Replace">
      </compilation >
  </system.web>
</configuration>

当您将 web.config 文件的命名空间从

更改为
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

<configuration xmlns:xdt="http://schemas.microsoft.com/.NetConfiguration/v2.0">

当这个变换

<?xml version="1.0" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
</configuration>

应用于调整后的web.config

<?xml version="1.0" ?>
<configuration xmlns:xdt="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <system.web>
    <compilation debug="true" targetFramework="4.0">
    </compilation>
  </system.web>
</configuration>

debug 属性已从结果中删除:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <system.web>
    <compilation targetFramework="4.0">
    </compilation>
  </system.web>
</configuration>

更新: 如评论中所述,web.config 文件的配置根本不应该有任何名称空间。相反,有必要添加此导入

<xdt:Import assembly="AppHarbor.TransformTester" 
            namespace="AppHarbor.TransformTester.Transforms"/>

到转换文件(至少,在使用提到的在线转换测试器进行测试时):

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<xdt:Import assembly="AppHarbor.TransformTester" 
     namespace="AppHarbor.TransformTester.Transforms"/>
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
  </system.web>
</configuration>