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