ご挨拶、
ライブラリが私が指定した特定のガイドラインに準拠している限り、ユーザーが作成したライブラリ (.NET DLL) をインポートできるようにするアプリケーションがあります (名前空間を使用する、メソッドを属性で装飾するなど)。各ユーザー ライブラリを内部ディレクトリにコピーし、それを独自のアプリ ドメインにロードします (必要に応じてユーザーがアンロードできるようにします)。したがって、同じ名前の 2 つのライブラリをロードできないという制限があります。
各ユーザー lib を内部ディレクトリの一意のサブディレクトリに配置せずに、この制限を削除したいと思います。内部ディレクトリにコピーするときに、ユーザー lib の名前を変更しようとしました。たとえば、ユーザーが c:\SomeLib.dll をインポートするように言い、SomeLib.dll という名前のライブラリが既に読み込まれていることを検出した場合、新しいファイルを ...\MyInternalDir\SomeLib2.dll にコピーします。ただし、これを行うと、ロードコマンドは次のようになります。
(ISomeInterface) iSomeLib = someAppDomain.CreateInstanceAndUnwrap(
"SomeLib2",
"SomeNamespace.SomeClassInSomeLib");
例外をスローします:
FileLoadException: ファイルまたはアセンブリ 'MyLib2' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040)
.NET に「コンパイル後にファイル名が変更されたという事実を無視する」ように指示する方法はありますか?