9

MSBuild コピー タスクでパスをハードコーディングせずに、MSBuild を使用して、1 つのプロジェクトからターゲット アプリケーションの出力ディレクトリに出力アセンブリをコピーしたい状況があります。シナリオは次のとおりです。

  • プロジェクト A - Web アプリケーション プロジェクト
  • プロジェクト B - ダル インターフェイス プロジェクト
  • プロジェクト C - ダル導入プロジェクト

ビジネス層もありますが、私が解決しようとしている MSBuild の問題とは関係ありません。

私のビジネス層には、私の Dal.Interface プロジェクトへの参照があります。私の Web プロジェクトにはビジネス レイヤーへの参照があり、現状では、ビルドを実行すると、ビジネス レイヤーと Dal.Interface プロジェクトが出力に取り込まれます。ここまでは順調ですね。Web アプリを実行するには、Dal の実装が必要です。インターフェイスにコーディングを強制したいので、実装をどこにも参照させたくありません。参照がないということは、インテリセンスなどに表示されないことを意味します。

したがって、MSBuild のコピー操作を AfterBuild タスクとして処理することで、これを処理できると考えました (Web プロジェクトのビルド時にビルドする Dal 実装のセットアップがあり、参照されていません)。MSBuild パラメーターにパスやその他のものをハード コードしたくないので、Web アプリケーション プロジェクトの MSBuild ファイルから Dal プロジェクトの出力を参照する方法を見つけようとしています。

したがって、上記のプロジェクトに基づいて、これが実現することを望んでいます。

  1. Web アプリのビルドが開始されました
  2. 必要なすべてのプロジェクトがビルドされます (既に構成されているため、これは完了しています)
  3. MSBuild の "AfterBuild" タスクが開始され、プロジェクト C (Dal 実装) からの出力がプロジェクト A (Web アプリ) の Bin ディレクトリにコピーされます。

パート3は私が立ち往生しているところです。

私はこれができると確信していますが、私は助けになる良い参考文献を見つけていません。助けてくれてありがとう。

4

2 に答える 2

9

私はこの作業を行いましたが、MSBuild 内の組み込みパラメーター ($(TargetDir) など) を利用するよりクリーンなソリューションを見つけたいと思っていますが、出力を取得したいプロジェクトをポイントします)。とにかく、これが私がやったことです:

<Target Name="AfterBuild">
<Copy SourceFiles="$(SolutionDir)MyProject.Dal.Linq\bin\$(Configuration)\MyProject.Dal.Linq.dll" DestinationFolder="$(TargetDir)"/>
</Target>

よりクリーンなソリューションを見たいと思っていますが、今のところこれで十分です。

于 2008-11-05T22:24:11.787 に答える