【问题标题】:Why is msbuild duplicating entries in web.config transformations?为什么 msbuild 在 web.config 转换中重复条目?
【发布时间】:2012-09-16 23:19:05
【问题描述】:

我正在使用 web.config 转换将条目插入 web.config 以用于某些构建配置。

例如我的 Web.Test.config 有这个条目:

<elmah>
    <errorMail from="me@me.com" to="me@me.com" async="false" smtpPort="25" smtpServer="mail" subject="test.senegal.co.uk Exception" xdt:Transform="Insert" />
</elmah>

这在视觉工作室中构建得非常好。

但是,当使用 msbuild 创建部署包时,该条目会在 web.config 中重复。这显然会导致异常。

有什么想法吗?

更新

我的“主”配置是 Web.Master.config 不是 Web.config。 web.config 文件在 Visual Studio 中构建时被覆盖。我想这一定与此有关。

我认为正在发生的是 msbuild 正在转换 web.config 而不是使用 Web.Master.config。

问题是如何告诉它使用正确的主人。

【问题讨论】:

    标签: msbuild visual-studio-2012 web-config-transform


    【解决方案1】:

    我在 msbuild 参数中添加了 /p:TransformWebConfigEnabled=false,因为我的 web.config 已经像这样在 BeforeBuild 目标中进行了转换:

    <Target Name="BeforeBuild">
       <TransformXml Source="$(MSBuildProjectDirectory)\Web.Master.config" Transform="$(MSBuildProjectDirectory)\Web.$(Configuration).config" Destination="$(MSBuildProjectDirectory)\Web.config" />
    </Target>
    

    【讨论】:

    • 你成就了我的一天。
    • 如果您正在从 Visual Studio (2019) 内部寻找解决方案,请转到 properties\PublishProfiles\{your file}.pubxml 并将属性添加到属性组:False
    【解决方案2】:

    在我的情况下,重复是由xdt:Transform="Insert" 引起的。如果将其从 Web..config 中删除并保留其余部分,它将正常工作,例如:

    <!-- doesn't work -->
    <add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="My" 
         xdt:Transform="Insert" />
    

    对比

    <!-- works -->
    <add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="My" 
         />
    

    【讨论】:

    • VS2019 对我不起作用...删除插入指令使其根本不插入组。
    • @BrienMalone:对不起,这是一个 7 岁的答案。我已经不记得了。我鼓励你提出一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2019-04-10
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2020-01-17
    相关资源
    最近更新 更多