我正在移植一個Java應用程序,其中的類是在內存(字節數組)運行時加載和「執行」的。我試圖在C#中實現同樣的功能,但在嘗試從字節數組裝載程序集時(使用AppDomain.Load
方法)時遇到問題(System.IO.FileNotFoundException
例外)。從內存中加載程序集
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"));
}
有沒有辦法來加載它們沒有需要堅持這個字節數組到文件系統?
簡化思想,我們希望能夠動態地執行和更改(更新)代碼。我們使用單獨的應用程序域來「加載/卸載」程序集。
字節數組必須來自某處。您可以打開網絡連接,或使用共享內存技術來獲取字節。 – 2010-07-01 15:00:00