Web.Config转换不更改任何值

时间:2015-01-08 00:22:11

标签: xml web-config-transform

我正在尝试设置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>

1 个答案:

答案 0 :(得分:3)

当您从

更改web.config文件的命名空间时,转换按照上面提到的web.config转换https://webconfigtransformationtester.apphb.com/在线预览工具的预期工作
<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>