2009-02-27 2 views
10

VS 2008の単一のソリューション内に複数のプロジェクト参照を含むWPFアプリケーションプロジェクトがあります。ソリューションをコンパイルすると、すべての参照されたDLLがメインの.exeが出力される同じフォルダ。Visual Studioで別のフォルダにメインの.exeファイルをコンパイルできます

メインの.exeプロジェクトビルドを構成して、サブフォルダ内のすべての参照をmy .exeに対して相対的に出力することはできますか?

MYAPP.EXE MyApp.exe.config のLib \ SomeReference.dll のLib \ SomeReference2.dll

(私は仮定し、この場合:私は、最終的な結果はこのような何かになりたい

可能ですが、任意の.exeで可能です)。

ありがとうございます! Jon

答えて

7

これはかなり集中的なプロセスのようです。

まず、参照のCopy Localプロパティをfalseに設定して、.dllがbin \ Debugフォルダにコピーされないようにします。

は、その後のLibフォルダ内のDLLを探すためにランタイムに指示するために、あなたのApp.configファイルで assemblyBinding\probing要素を作成

その後デバッグ\ Libの\ \ビンに必要なDLLをコピーするビルド後のアクションを作成フォルダ。

+0

の場合、Copy Local = trueを残すほうが簡単ですが、assemblyBinding \ probingと$(TargetDir)からポストビルド時のサブフォルダを移動する* .DLLを組み合わせる方が簡単でしょう。 –

+0

これらがプロジェクト参照の場合、私はあなたに同意しますが、これらがあらかじめコンパイルされたDLLであれば、ポストビルドのソースからコピーすることもできます。また、msiを作成している場合は、dllをプライマリ出力の一部にすることは望ましくありません。これは、CopyLocal = trueの場合にdllが存在すると信じています。 – foson

+0

ああ、ありがとう、私はプロジェクトの参考資料を考えていた。プロジェクトの代わりにDLLを参照することは悪いカルマですが、サードパーティのDLLとデプロイメントプロジェクトは優れた点です。 –

関連する問題