4

特定のビルド構成のエントリを 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.config ではなくWeb.Master.configです。Visual Studio でビルドすると、web.config ファイルが上書きされます。これと何か関係があるに違いないと思います。

私が考えているのは、msbuild が Web.Master.config を使用するのではなく、web.config を変換していることです。

問題は、正しいマスターを使用するように指示する方法です。

4

2 に答える 2

4

/p:TransformWebConfigEnabled=false私のweb.configはすでにBeforeBuildターゲットで次のように変換されていたので、msbuildパラメータに追加しました:

<Target Name="BeforeBuild">
   <TransformXml Source="$(MSBuildProjectDirectory)\Web.Master.config" Transform="$(MSBuildProjectDirectory)\Web.$(Configuration).config" Destination="$(MSBuildProjectDirectory)\Web.config" />
</Target>
于 2012-09-25T13:07:13.910 に答える
3

私の場合、重複は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" 
     />
于 2014-09-30T06:19:02.040 に答える