如何从.NET Framework编写的应用程序加载.NET Core程序集?

时间:2017-10-02 09:45:33

标签: .net reflection .net-core

我们有一个用.NET编写的应用程序,它使用Reflection API浏览.NET程序集。当我们使用此应用程序浏览使用.NET Core 2.0编译的dll时,它会失败并出现以下异常。任何有关这方面的帮助将不胜感激。

Unhandled Exception: System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
   at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
   at System.Reflection.RuntimeModule.GetTypes()
   at System.Reflection.Assembly.GetTypes()
   at ConsoleApp1.Program.NewMethod() in c:\Users\faisal_iqbal\documents\visual studio 2017\Projects\CoreX\ConsoleApp1\Program.cs:line 23
   at ConsoleApp1.Program.Main(String[] args) in c:\Users\faisal_iqbal\documents\visual studio 2017\Projects\CoreX\ConsoleApp1\Program.cs:line 16

1 个答案:

答案 0 :(得分:2)

回答我自己的问题。

  
    

NETCore是一个非常不同的框架。如果你构建该程序集     取而代之的是.NETStandard 2.0,并至少定位您的应用     4.6.1那么你就可以做到这一点。

  
     

- Hans Passant

由于.NET Framework和.NET Core都是不同的框架,因此每个框架都有自己的Reflection API

如果您只是为了元数据读取而需要加载程序集,请使用适用于.NET Framework和.NET Core的Mono.Cecil框架。它不会像Reflection那样加载装配或相关装配。它只是读取元数据信息,如

  • 装配中的类型
  • 类型
  • 中的属性,字段和方法
  • 类型的名称,FullName和命名空间
  • 等...