从内存中动态加载程序集时,DefinedTypes属性会引发错误

时间:2015-06-28 09:26:18

标签: c# .net reflection .net-assembly

我正在尝试动态加载一些项目的程序集。

当我通过像Assembly.LoadFile(path)这样的文件路径加载它们时,我可以通过从加载的程序集中调用GetTypes()方法来获取它们定义的类型。

var asm = Assembly.LoadFile(path);
var defienedTypes = asm.GetTypes(); //I've got all types without any error

但是当我从Assembly.Load(System.IO.File.ReadAllBytes(path))这样的内存中加载它们时,我无法检索已定义的类型。因此调用GetTypes()方法会导致错误:

  

无法加载一个或多个请求的类型。检索LoaderExceptions属性以获取更多信息

并且LoaderExceptions属性包含所有已定义的类型。

1 个答案:

答案 0 :(得分:1)

确保正确加载程序集使用的所有必需参考。

' LoaderException' Exception对象中的属性告诉您哪些类型不可检索。