Assembly.LoadFrom を使用してカスタム dll をロードしますが、これらの dll の 1 つがプロジェクト ソリューションで維持され、アプリケーションと共に提供されます。
問題は、プロジェクトをビルドしようとするたびに、別のプロセスで使用されているため、新しくコンパイルされた dll を古いものにコピーできないというエラーが表示されることです。
これを処理する最良の方法は何ですか? 頭に浮かぶのは、次の 2 つのアイデアです。
- ファイルをロードする前に別の場所にコピーする
- 自分でファイルをメモリに読み込むだけで、ファイルを手動で閉じて、メモリ内コピーからアセンブリを読み込むことができます。
これらのソリューションはどちらもかなり簡単に実装できますが、コードを変更する必要のない迅速で簡単なアプローチがあれば、さらに良いと思います。
編集:実行時にアセンブリをアンロードする必要はありません。プログラムが終了したら、dll ファイルのロックを解除する必要があります。私は、AppDomains がどのように機能するか、およびプラグインを独自の AppDomains にロードする利点を完全に認識していますが、この特定のアプリケーションでは、そのようにはしていません。