Tim*_*nem 10 c# .net-assembly .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);
Run Code Online (Sandbox Code Playgroud)
我正在使用.NET Core 2.0、2.1和2.2。
有人可以解释为什么会发生这种情况以及任何可能的解决方案吗?
\xd0\xa1错误原因
\n\n您使用访问模式 AssemblyBuilderAccess.Run 定义了动态程序集,该模式不允许保存程序集。然后,您尝试使用 Assembly 类的 Load 方法加载程序集,该方法会搜索文件。
\n\n解决方案
\n\n如果您想在内存中使用动态程序集,那么您已经得到了。下一步是在其他构建器的帮助下定义模块、类型等。
\n\nvar moduleBuilder = assembly.DefineDynamicModule("test");\nvar typeBuilder = moduleBuilder.DefineType("someTypeName");\nvar type = typeBuilder.CreateType();\nvar instance = Activator.CreateInstance(type);\nRun Code Online (Sandbox Code Playgroud)\n\n您可以在.NET API 文档中找到更多信息。
\n|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           371 次  |  
        
|   最近记录:  |