1

Assembly.LoadFrom を使用してカスタム dll をロードしますが、これらの dll の 1 つがプロジェクト ソリューションで維持され、アプリケーションと共に提供されます。

問題は、プロジェクトをビルドしようとするたびに、別のプロセスで使用されているため、新しくコンパイルされた dll を古いものにコピーできないというエラーが表示されることです。

これを処理する最良の方法は何ですか? 頭に浮かぶのは、次の 2 つのアイデアです。

  • ファイルをロードする前に別の場所にコピーする
  • 自分でファイルをメモリに読み込むだけで、ファイルを手動で閉じて、メモリ内コピーからアセンブリを読み込むことができます。

これらのソリューションはどちらもかなり簡単に実装できますが、コードを変更する必要のない迅速で簡単なアプローチがあれば、さらに良いと思います。

編集:実行時にアセンブリをアンロードする必要はありません。プログラムが終了したら、dll ファイルのロックを解除する必要があります。私は、AppDomains がどのように機能するか、およびプラグインを独自の AppDomains にロードする利点を完全に認識していますが、この特定のアプリケーションでは、そのようにはしていません。

4

0 に答える 0