2

app.config で定義されているデータベース接続文字列を使用するコンソール アプリケーションがあります。ビルド構成に応じて文字列を変更するための変換がいくつかあります。

app.config を他のプロジェクトの出力にコピーするビルド後のイベントもいくつかあります。問題は、ビルド後のイベントが最初に発生し、変換されていない app.config をコピーすることです。後で変換タスクが開始され、変換が適用されます (そのため、機能することがわかります)。Visual Studio 2010 と .NET 4 で使用しています。

現在、アクションは [1]、[ 3 ]、[ 2 ] です。[1]、[2]、[3] に並べ替える必要があります。

1) ビルド
2) 変換の実行
3) ビルド後のイベントの実行

これが.csprojからの私の変換です

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
  <Target Name="Transformation" Condition="exists('app.$(Configuration).config')" >
    <TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
    <ItemGroup>
      <AppConfigWithTargetPath Remove="app.config" />
      <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
        <TargetPath>$(TargetFileName).config</TargetPath>
      </AppConfigWithTargetPath>
    </ItemGroup>
  </Target>

そして、これは私のビルド後のイベントです

<PropertyGroup>
    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
  </PropertyGroup>

 <PropertyGroup>
    <PostBuildEvent>copy $(ProjectDir)app.config $(OutDir)\TH.Presentation.LocalAgent\$(TargetFileName).config
copy $(ProjectDir)app.config $(OutDir)\TH.Services\$(TargetFileName).config</PostBuildEvent>
  </PropertyGroup>

どんな助けでも大歓迎です

4

2 に答える 2

1

それらを並べ替える方法がない場合は、それらを組み合わせることができます。ビルド後のイベント内 (上部) で変換を行います。ただし、(私が知っている) コマンド プロンプト構文には適切な xml 変換メソッドはありません。ファイル名と変換名をパラメーターとして渡して、独自のxml変換実行可能ファイル/バッチファイルを呼び出すことができます。

独自のユーティリティを作成したくない場合は、たくさんあります

于 2012-04-25T23:58:12.620 に答える
1

ビルド後のイベントを使用してファイルをコピーする代わりに、それらを変換ターゲットの一部としてコピーできます。

上記の XML で直前のタスクを使用します。http://msdn.microsoft.com/en-us/library/3e54c37h.aspxを参照してください。

于 2012-04-26T09:24:45.520 に答える