gpt4 book ai didi

c# - 从内存加载程序集

转载 作者:行者123 更新时间:2023-11-30 18:08:25 33 4
gpt4 key购买 nike

我正在移植一个 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"));
}

有没有办法加载它们而不需要将这个字节数组持久化到文件系统中?

简化思路,我们希望有动态执行和改变(更新)代码的能力。我们使用单独的应用程序域来“加载/卸载”程序集。

最佳答案

我刚刚试过这段代码:

static void Main(string[] args)
{

var h = File.ReadAllBytes(@"C:\MyAssembly.exe");

var g = Assembly.Load(h);
}

它运行良好 - 我没有遇到任何异常。您是否 100% 确定目标程序集存在?

关于c# - 从内存加载程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3158217/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com