4

1つのEXEと約7つのDLLを含むC#プロジェクトがあります。私が欲しいのは、EXEの横にある「ライブラリ」(または同様のもの)と呼ばれるフォルダーで、すべてのDLLが含まれているため、もう少し整理され、エンドユーザーにとって見栄えが良くなります。

これはAppConfigを使用して実行できることはわかっていますが、EXEの横に別のファイルは必要ありません。私が欲しいのはメインのEXEとフォルダだけです。

AppConfigを使用して埋め込み、または現在のDLLの使用方法を変更しないAppConfigを使用せずにDLLをロードすることは可能ですか?実行時にDLLをロードできることは知っていますが、それが私が探しているものではないと思います。

ありがとう!

編集

私はこれを行うことの賛否両論を知っているので、これを行う方法についてのみ答えてください。なぜこれを行うべきか、すべきでないかについてのアドバイスはありません。

4

3 に答える 3

1

を使用しSystem.Reflection.Assembly.LoadFrom(path)ます。

LoadFrom依存関係について、ターゲットのdllと同じフォルダーを検索できるようになります。を使用する場合Load、ロードするdllと同じフォルダにあるdllは考慮されません。

これがあなたの質問に直接答えないことは知っていますがLoadFrom、「xcopy」インストール可能な.netアプリなどが必要な場合は、プロセスの起動の早い段階でDLLを手動で呼び出すとうまくいくはずです。

于 2012-08-19T21:16:56.323 に答える
1

PrettyBinはあなたのソリューションです。これを美しくします!

于 2016-03-15T21:49:03.420 に答える
0

SetDllDirectory()+慎重にコーディングされたAssemblyResolve。DLL地獄のない、重要なプロジェクトで私のために働きます。

https://github.com/TASVideos/BizHawk/blob/d05ddabf5f22debf47369f94868462a75ea0b466/BizHawk.Client.EmuHawk/Program.cs

于 2016-03-15T22:35:08.223 に答える