新しい appdomain を作成し、assemblyResolve ハンドラーをセットアップすると、「アセンブリ [現在実行中のアセンブリ] が見つかりません」という例外が常に発生します。
何が得られますか?コードは以下です
string _fileName = @"c:\temp\abc123.dll";
AppDomain sandBox = AppDomain.CreateDomain("sandbox");
sandBox.AssemblyResolve += new ResolveEventHandler(sandBox_AssemblyResolve);
// the line generates the exception !
System.Reflection.Assembly asm = sandBox.Load(System.Reflection.AssemblyName
.GetAssemblyName(fileName).FullName);
foreach (System.Reflection.AssemblyName ar in asm.GetReferencedAssemblies())
dbgWrite("Ref: " + ar.FullName );
System.Reflection.Assembly sandBox_AssemblyResolve
(object sender, ResolveEventArgs e)
{
System.Reflection.Assembly asm =
System.Reflection.Assembly.LoadFrom(_fileName);
return asm;
}
例外は次のとおりです。
System.IO.FileNotFoundException: ファイルまたはアセンブリ 'appAdmin、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。ファイル名: 'appAdmin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' [中略]