3

私のプロジェクトの依存関係を減らすために、私は今、インターフェースに依存し、実装しているすべてのものを持っており、それらは IoC コンテナーによって一緒に接着されています。これは、プロジェクトがそのようなインターフェース ライブラリへの直接参照のみを必要とすることを意味します。

ただし、プロジェクトが実装への参照を持つように指定しない場合 (コンパイル時に必要なくても)、実装ライブラリは実行可能ファイルまたはセットアップ プロジェクトに含まれません。

必要のないときに明示的な参照を要求することで、Visual Studio が悪い慣行を助長しているのですか? 必要なインターフェイスのみに依存関係を持たせることは可能ですか?この場合、実装ライブラリを利用できるようにするための最良の方法は何ですか?

4

3 に答える 3

2

必要のないときに明示的な参照を要求することで、Visual Studio が悪い慣行を助長しているのですか?

あまり。あなたの問題は、構築ではなく展開の問題です。

アプリケーションのデプロイとビルドは別物です。適切なデプロイ戦略があれば、実装が属する場所にデプロイすることになります。

必要なインターフェイスのみに依存関係を持たせることは可能ですか?この場合、実装ライブラリを利用できるようにするための最良の方法は何ですか?

最も簡単な方法は、実装アセンブリを参照することです。これにより、ローカルでのビルドと実行が と同じくらい簡単にF5なりますが、本当にそれが必要ですか? 正直に言うと、あなたとあなたのチームがインターフェイスにのみコーディングする規律を持っている場合、それで十分です (そして、それが確実に維持されるようにするのに役立つ nDepend のような静的分析ツールがあります)。

前進する 1 つの方法は、ローカルか他の場所かにかかわらず、すべての依存関係を展開する展開スクリプトを作成することです。

于 2012-06-27T19:07:25.070 に答える
1

Visual Studioにはこれらの参照は必要ありませんが、IoCコンテナーには必要です。プロジェクトへの参照を追加すると、そのバイナリは自動的に出力フォルダーに含まれます。これは、IoCコンテナーがコードを結合するために必要です。Visual Studioでプロジェクトを参照する以外に、これらのバイナリを出力フォルダーに移動する方法は他にもあります。おそらく、ビルド後の手順ですか。

于 2012-06-27T19:11:51.377 に答える
1

いいえ。これは、開発者が余分なことをする必要なく( を押す以外にF5)作業コードを提供するために、またはすべての参照がデフォルトで追加されるようにするために(古いものでは混乱して遅くなる可能性が高い) 、必要な最低限のことです。ハードディスク。

ローカル開発ビルドの場合は、関連するプロジェクトでビルド後の手順を実行して、DLL をメインの作業ディレクトリにコピーするだけです。ビルドするアクティブな構成にプロジェクトが追加されていることを確認してください。そうしないと、ビルド後の面倒なデバッグセッション全体を実行して、ビルドがなかったことを認識するだけです...笑

VS 2010。ビルド後。ファイルを複数のディレクトリ/複数の出力パスにコピーする

VS2010 のビルド後のイベントで bin ファイルを物理ファイルの場所にコピーする

アプリケーションを本格的に展開する場合は、Visual Studio のセットアップ プロジェクトを最小限に抑える必要がありますが、より理想的には、WiXや別の展開ツール セットのようなものを検討することになります。

于 2012-06-27T19:10:28.093 に答える