私のシナリオは、AppDomains を作成する .net アプリケーション (コンソール アプリとしましょう) があるというものです。次に、インスタンスを作成し、その AppDomain にある型でメソッドを呼び出す必要があります。各 AppDomain には、依存関係があるべき特定のディレクトリがあります。これは、コンソール アプリ ディレクトリの下 (または近く) ではありません。これが私の簡単なコードです:
string baseDirectory = "c:\foo"; // <- where AppDomain's dependecies
// set up the app domain
AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationName = DateTime.Now.ToString("hh:MM:ss:ffff");
setup.ApplicationBase = baseDirectory;
setup.PrivateBinPath = baseDirectory;
// create app domain
AppDomain domain = AppDomain.CreateDomain(
name,
AppDomain.CurrentDomain.Evidence,
setup );
// instantiate Type from an assembly in that AppDomain
ObjectHandle handle = domain.CreateInstanceFrom(
"SampleClassLibrary.dll", // <- exists in "c:\foo"
"SomeClassInTheDll" );
CreateInstanceFrom を呼び出すと、FileNotFoundExcepotion が発生します。FusionLog は、検索したディレクトリがコンソール アプリケーション ディレクトリであったことを示しています。「baseDirecory」変数に、AppDomain から設定された検索フォルダーは含まれていませんでした。
私は何を間違っていますか?別の AppDomain にあるコードを実行する別の方法はありますか?
ありがとう...