我有一个使用AssemblyBuilder.DefineDynamicAssembly动态生成的程序集,但是当我试图加载它时,我得到以下错误:
System.IO.FileNotFoundException:“无法加载文件或程序集”测试,Culture=neutral,PublicKeyToken=null。系统找不到指定的文件。
这是复制的完整代码:
var name = new AssemblyName("test");
var assembly = AssemblyBuilder.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run);
var assembly2 = Assembly.Load(name);我使用的是.NET Core2.0、2.1和2.2。
有人能解释一下为什么会发生这种情况吗?有什么可能的解决办法?
发布于 2019-04-19 17:00:23
С由于误差
您使用访问模式AssemblyBuilderAccess.Run定义了一个动态程序集,该模式不允许保存程序集。然后,尝试使用程序集类的load方法加载程序集,该方法搜索文件。
溶液
如果您想在内存中使用动态程序集,则已经得到它。下一步是在其他构建器的帮助下定义模块、类型和另一个模块。
var moduleBuilder = assembly.DefineDynamicModule("test");
var typeBuilder = moduleBuilder.DefineType("someTypeName");
var type = typeBuilder.CreateType();
var instance = Activator.CreateInstance(type);您可以在.NET API文档中找到更多信息。
https://stackoverflow.com/questions/55747383
复制相似问题