実行時にメモリ(バイト配列)からクラスがロードされて「実行」されるJavaアプリケーションを移植しています。C#で同じことを達成しようとしていSystem.IO.FileNotFoundException
ますが、バイト配列からアセンブリをロードしようとすると(AppDomain.Load
メソッドを使用して)問題(例外)が発生します。
static void Main(string[] args)
{
var domain = AppDomain.CreateDomain("foo");
domain.AssemblyResolve += new ResolveEventHandler(domain_AssemblyResolve);
var assembly = domain.Load("MyAssembly");
}
static Assembly domain_AssemblyResolve(object sender, ResolveEventArgs args)
{
// ...
return Assembly.ReflectionOnlyLoad(File.ReadAllBytes(@"C:\MyAssembly.exe"));
}
このバイト配列をファイルシステムに永続化する必要なしにそれらをロードする方法はありますか?
アイデアを単純化するために、コードを動的に実行および変更(更新)する機能が必要です。アセンブリを「ロード/アンロード」するために、個別のアプリケーションドメインを使用します。