【问题标题】:How do I transform this element in my Web.config?如何在我的 Web.config 中转换此元素?
【发布时间】:2020-12-07 20:54:25
【问题描述】:

我已经在这里搜索了大约半天,但我仍然像刚开始时一样一无所知。

这是我的 Web.config 的相关部分

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
    <!--
    For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.

    The following attributes can be set on the <httpRuntime> tag.
      <system.Web>
        <httpRuntime targetFramework="4.5.2"/>
      </system.Web>
  -->
    <configSections>
        <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
        <sectionGroup name="applicationSettings"
        type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <section name="DasExternalFileTransfer.Properties.Settings"
              type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
        </sectionGroup>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework"
            type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            requirePermission="false"/>
    </configSections>
    <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd">
        <targets>
            <target name="logfile" xsi:type="File" fileName="" layout="${longdate} ${callsite} ${level} ${message}"/>
        </targets>
        <rules>
            <logger name="*" minlevel="Debug" writeTo="logfile"/>
        </rules>
    </nlog>

我想替换configuration/nlog/targets/target 下的fileName 值。 我在我的 Web.Dev.config 中尝试了六种不同的东西。最新的是

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <target xdt:Transform="Replace" xdt:Locator="XPath(/configuration/nlog/targets)"  />
    <target xdt:Transform="Replace" fileName="\\newlocation.ad\location1" />
    <system.web>
        <compilation xdt:Transform="RemoveAttributes(debug)" />
    </system.web>
</configuration>

到目前为止,我在 Visual Studio 中预览转换时没有看到任何效果。

我怀疑我没有以进程可以找到它的方式定义元素,但我不确定。

有人可以帮我弄清楚如何正确定义元素,以便我可以用新值替换该值吗?还是我只是采取了错误的方法?

好的,我想我已经想通了

似乎命名空间让我感到困惑。

我修改了我的 Web.config 的这一部分

<nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd">
    <targets>
        <target name="logfile" xsi:type="File" fileName="" layout="${longdate} ${callsite} ${level} ${message}"/>
    </targets>
    <rules>
        <logger name="*" minlevel="Debug" writeTo="logfile"/>
    </rules>
</nlog>

注意,我删除了xmlns="http://www.nlog-project.org/schemas/NLog.xsd"。 然后我将我的 Web.Dev.config 修改为

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd">
        <targets>
            <target xdt:Transform="SetAttributes(fileName)" xdt:Locator="Match(name)" name="logfile" fileName="\\newlocation.ad\location1" />
        </targets>
    </nlog>
    <system.web>
        <compilation xdt:Transform="RemoveAttributes(debug)" />
    </system.web>
</configuration>

然后,当我预览转换时,我看到这是结果&lt;target name="logfile" xsi:type="File" fileName="\\newlocation.ad\location1" layout="${longdate} ${callsite} ${level} ${message}"/&gt;。 我现在只是希望命名空间的删除不会对 NLog 产生不利影响,但我将通过测试来确定这一点。

【问题讨论】:

  • 您能否将您的答案作为实际答案发布在下面。谢谢

标签: visual-studio web-config transformation xdt


【解决方案1】:

似乎命名空间让我感到困惑。

我修改了我的 Web.config 的这一部分

<nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd">
    <targets>
        <target name="logfile" xsi:type="File" fileName="" layout="${longdate} ${callsite} ${level} ${message}"/>
    </targets>
    <rules>
        <logger name="*" minlevel="Debug" writeTo="logfile"/>
    </rules>
</nlog>

注意,我删除了xmlns="http://www.nlog-project.org/schemas/NLog.xsd"。 然后我将我的 Web.Dev.config 修改为

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd">
        <targets>
            <target xdt:Transform="SetAttributes(fileName)" xdt:Locator="Match(name)" name="logfile" fileName="\\newlocation.ad\location1" />
        </targets>
    </nlog>
    <system.web>
        <compilation xdt:Transform="RemoveAttributes(debug)" />
    </system.web>
</configuration>

然后,当我预览转换时,我看到这是结果&lt;target name="logfile" xsi:type="File" fileName="\\newlocation.ad\location1" layout="${longdate} ${callsite} ${level} ${message}"/&gt;。 我现在只是希望命名空间的删除不会对 NLog 产生不利影响,但我将通过测试来确定这一点。

【讨论】:

    猜你喜欢
    • 2011-07-07
    • 2012-05-11
    • 2011-05-26
    • 2016-12-31
    • 2011-08-02
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多