2016-05-10 15 views
0

私のプロジェクトのResourcesフォルダには、私のソリューション内の他のアセンブリからの多くの異なるDLLがあります。これらのDLLは組み込みリソースとして使用されるので、すべてのDLLのローカルコピーを持たなくても1つのEXEを持つことができます。私ができるようにしたいのは、ソリューション全体を構築するたびにそれらを更新することです。たとえば、AssemblyOne/bin/x86/Debug/Foo.dllがある場合、プロジェクトをビルドするたびにDLLを常にLocalAssembly/Resources/Foo.dllにコピーします。組み込みアセンブリをプロジェクトリソースフォルダにコピーする方法は?

これを行う簡単な方法はありますか?私はポストビルドイベントマクロを見ていましたが、ソリューションディレクトリではない私の "LocalAssembly"を直接参照することはできませんでした。また、新しくコピーされたDLLが私のローカルマシンへの絶対参照ではないような方法で、新しいカスタムポストビルドコマンドを書く方法についてはわかりません。ありがとう!詳細はコメントしてください。質問を編集します。

+1

LocalAssemblyは、ソリューションのディレクトリを基準にして、ビルド後のイベントで../../ ..または類似のものを使用してアドレス指定できます。それで十分ではないですか? – tmesser

+0

スタートアッププロジェクトでアセンブリを右クリックし、プロパティをクリックしてビルドアクションを選択してリソースとして埋め込みます – mohsen

+0

@YYYこれを試してみて何が起こるかを確認します – LaneL

答えて

1

ポストビルドイベントでは、ソリューションフォルダのみにアクセスする必要はありません。ポストビルドスクリプトは、コンパイラが実行されたときにどのような権限で実行されます。 Visual Studioでは管理者権限で頻繁に実行されるため、ファイルシステム全体にアクセスできる可能性は非常に高いです。その結果、リソースをコピーしたい場合は、ビルド先ディレクトリでxcopyコールを開始していると仮定するだけです。そこから、通常の経路でナビゲートすることができます。たとえば、3つのレベルを上に移動してからディレクトリLocalAssembliesに移動する必要がある場合、コピーコマンドはxcopy Foo.dll ../../../LocalAssembliesのようになります。

関連する問題