特別なプラグイン フォルダーを使用して追加の DLL をロードする VS 2005 C# プロジェクトがあります (アセット変換プロセスでノードとして使用するため)。
このフォルダーには、C# と C++ の DLL が混在しています。
私が抱えている問題は、シャドウ コピーが有効になっている場合、C++ DLL が Assembly.LoadFrom を使用してロードすることを拒否することです。カスタム アプリ ドメインの作成を試み、Load を使用しましたが、これも失敗しました。
最後に、DLL を byte[] データとして読み取り、その上で Load を使用しようとしましたが、C# DLL のみがこの方法で動作し、「追加情報: 検証不能なコードはポリシー チェックに失敗しました。(Exception from HRESULT: 0x80131402)」というエラーが表示されます。 "。
ネット上の記事で、その特定の DLL をビルドするときに /clr:safe を使用しようとするように促されましたが、Microsoft コードの何千ものエラーのためにビルドに失敗しました... (どうやら)
シャドウ コピーを無効にすると、LoadFrom はすべての DLL に対して正常に機能します。アプリ自体が Maya のプラグインであり、これは Maya 8.5 で動作していましたが、2008 / 2009 で失敗します (シャドウ コピーが有効な場合)。
アプリの実行中に DLL ファイルがロックされるのを防ぐため、シャドウ コピーを使用することを強くお勧めします (Plugins フォルダーは、アプリの実行中に Perforce が更新できる場所に保存されます)。
シャドウ コピーがカスタム フォルダと C#/C++ DLL の組み合わせでこれらの問題なしに動作するように説得する方法についてのアイデアはありますか?