为什么msbuild会在web.config转换中复制条目?

为什么msbuild会在web.config转换中复制条目?,msbuild,visual-studio-2012,web-config-transform,Msbuild,Visual Studio 2012,Web Config Transform,我正在使用web.config转换将特定构建配置的条目插入web.config 例如,my 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" /> <

我正在使用web.config转换将特定构建配置的条目插入web.config

例如,my 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>

这在VisualStudio的建筑中非常有效

但是,当使用msbuild创建部署包时,该项在web.config中重复。这显然导致了一个例外

有什么想法吗

更新

我的“主”配置是Web.master.config而不是Web.config。web.config文件在visual studio中生成时被覆盖。我想一定与此有关

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


问题是如何告诉它使用正确的主控形状。

我在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>

在我的例子中,复制是由
xdt:Transform=“Insert”
引起的。如果将其从Web..config中删除并保留其余部分,则它将正常工作,例如:

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

vs


你让我很开心。
<!-- works -->
<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="My" 
     />