【问题标题】:Web.config transform removes first setting despite name locator尽管名称定位器,Web.config 转换仍删除第一个设置
【发布时间】:2016-08-01 16:58:11
【问题描述】:

我有一个严重异常的 Web.config 转换。我的 web.config 如下所示:

<configuration>
  <configSections>  </configSections>
  <appSettings>  </appSettings>
  <connectionStrings>  </connectionStrings>
  <system.web>  </system.web>
  <runtime>  </runtime>
  <system.webServer>  </system.webServer>
  <entityFramework>  </entityFramework>
  <elmah>  </elmah>
  <applicationSettings>
    <MySite.Properties.Settings>
      <setting name="CommandTimeout" serializeAs="String">
        <value>180</value>
      </setting>
      <setting name="LoginServerUrl" serializeAs="String">
        <value>mydevsite.com</value>
      </setting>
    </MySite.Properties.Settings>
  </applicationSettings>
</configuration>

当我认为我应该能够得到它时:

<MySite.Properties.Settings>
  <setting name="LoginServerUrl" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)">
    <value>myqasite.com</value>
  </setting>
</MySite.Properties.Settings>

但是当我这样做时,它会替换第一个设置(命令超时)并将第二个设置留在那里,这样我就有 2 个 loginserverurl 设置并且没有命令超时!

我可以让它将 mydevsite.com 转换为 myqasite.com 的唯一方法是创建一个执行此操作的转换:

<?xml version="1.0" encoding="utf-8"?>

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
    <customErrors mode="Off" xdt:Transform="Replace">
      <error statusCode="404" redirect="~/Error/Error404"/>
    </customErrors>
  </system.web>
  <applicationSettings>
    <MySite.Properties.Settings>
      <setting name="LoginServerUrl" xdt:Transform="Remove" xdt:Locator="Match(name)"/>
      <setting name="CommandTimeout" xdt:Transform="Insert" serializeAs="String">
        <value>180</value>
      </setting>
      <setting name="LoginServerUrl" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)">
        <value>myqasite.com</value>
      </setting>
    </MySite.Properties.Settings>
  </applicationSettings>
</configuration>

我在这里做错了吗?

【问题讨论】:

    标签: xml visual-studio-2015 web-config web.config-transform


    【解决方案1】:

    使用您的配置(在 App.config 文件中),以下内容(在 App.Debug.config 文件中)非常适合我:

    我唯一需要添加的是 &lt;applicationSettings&gt; 标签来包装 &lt;MySite.Properties.Settings&gt;

    <?xml version="1.0"?>
    <!-- For more information on using app.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
    <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
      <applicationSettings>
        <MySite.Properties.Settings>
          <setting name="LoginServerUrl" serializeAs="String" xdt:Transform="Replace" xdt:Locator="Match(name)">
            <value>myqasite.com</value>
          </setting>
        </MySite.Properties.Settings>
      </applicationSettings>
    </configuration>
    

    我正在使用“Configuration Transformation”VS 扩展为我创建嵌套文件:

    【讨论】:

    • 你是如何检查它是否有效的?通过App.Debug.config上的预览转换?
    • @CBauer 我在构建后查看了bin\Debug 文件夹中输出的配置文件
    猜你喜欢
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2013-05-12
    相关资源
    最近更新 更多