2

そのため、新しく作成されたアプリ ドメインが必要なアセンブリを読み込めない場合、AppDomains の作成は常に厄介な問題になる可能性があります。しかし、ASP.NET Core プロジェクトでは、コードが (Gac ではなく) メモリにコンパイルされるため、さらに困難に思えます。これは、ファイルの場所に基づいて解決およびロードする一般的な方法が機能しないことを意味します。

デフォルトの ASP.NET Core Web サイトを作成し、以下のコードをコントローラーの ctor に追加すると、AssemblyResolve で失敗します。

public MyController(){
    var appDomain = AppDomain.CreateDomain("Test");
    appDomain.AssemblyResolve += (sender, e) => {return null;}
}

ASP が既に作成した MetadataEmbeddedReferences のリストを含むある種のコンテキスト/プロバイダーを挿入する方法があるかどうかはわかりませんでしたが、その生のアセンブリを新しい appDomain にロードするだけで済みました。

何か案は?

4

0 に答える 0