c# - Assembly.Load .NET Core
问题描述
我有一个使用 动态生成的程序集AssemblyBuilder.DefineDynamicAssembly
,但是当我尝试加载它时,出现以下错误:
System.IO.FileNotFoundException:'无法加载文件或程序集'test,Culture=neutral,PublicKeyToken=null'。该系统找不到指定的文件。'
这是重现的完整代码:
var name = new AssemblyName("test");
var assembly = AssemblyBuilder.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run);
var assembly2 = Assembly.Load(name);
我正在使用 .NET Core 2.0、2.1 和 2.2。
有人可以解释为什么会发生这种情况以及任何可能的解决方案吗?
解决方案
Сause of error
您使用访问模式 AssemblyBuilderAccess.Run 定义了一个动态程序集,它不允许保存程序集。然后,您尝试使用 Assembly 类的 Load 方法加载程序集,该方法搜索文件。
解决方案
如果您想在内存中使用动态程序集,那么您已经掌握了它。下一步是在其他构建器的帮助下定义模块、类型和另一个。
var moduleBuilder = assembly.DefineDynamicModule("test");
var typeBuilder = moduleBuilder.DefineType("someTypeName");
var type = typeBuilder.CreateType();
var instance = Activator.CreateInstance(type);
您可以在.NET API 文档中找到更多信息。
推荐阅读
- python - LinkedIn V2 API Marketing Developer Platform - 获取 ugcPost 参考 URN 的数据返回 500 错误
- postgresql - 现有数据集上的 Postgres 13 + pglogical 2.3.4
- python - plt.hist MatPlotlib 中的 bins 选项
- i2c - 读取 I2C 传感器时 Pi Pico 错误 EIO
- python - 合并 txt 文件问题,输出文件不是 txt
- python - 如何绘制 pytorch 张量?
- c - 通过文件描述符或套接字轮询 X 事件
- structure - 为什么 STRUCTURE v2.3.4(命令行)不起作用?
- typescript - 为什么在 strictNullChecks 开启时 null 变量仍会扩大以键入任何内容?
- tableau-desktop - 在 Tableau 中使用布尔值和 LOD