反射,.net项目在不同解决方案中从.net核心项目读取dll

时间:2019-03-14 13:50:55

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

我在Visual Studio 2017中有2个解决方案。

  • 第一个解决方案有一个项目,该项目从外部解决方案中的项目中读取程序集/ dll。该项目使用.net 4.5.2编码
  • 第二个解决方案有一个项目,该项目具有目标的类/ dll以反映到第一个项目。该项目是用.net core 2
  • 编写的
  • 两个项目都有两种不同的解决方案。

第一个项目中的代码:

string pathDllProject_DAL = "E:\\Coding\\Repos\\_order_manager_webapp\\order_manager_webapp_backend\\DAL\\bin\\Debug\\netcoreapp2.2\\DAL.dll";
//This line of code works, I do get the assembly object
Assembly ass_DAL2 = Assembly.LoadFile(pathDllProject_DAL);


Type[] respTypes = ass_DAL2.GetTypes(); //<----Exception Thrown HERE

这是我得到的例外:

'ass_DAL2.GetTypes()' threw an exception of type 'System.Reflection.ReflectionTypeLoadException'
    Data: {System.Collections.ListDictionaryInternal}
    HResult: -2146232830
    HelpLink: null
    InnerException: null
    LoaderExceptions: {System.Exception[152]}
    Message: "Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information."
    Source: "mscorlib"
    StackTrace: "   at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)\r\n   at System.Reflection.RuntimeModule.GetTypes()\r\n   at System.Reflection.Assembly.GetTypes()"
    TargetSite: {System.RuntimeType[] GetTypes(System.Reflection.RuntimeModule)}
    Types: {System.RuntimeType[279]}

我想知道从.net 4.5.2框架读取在.net-core中创建的DLL是否存在不兼容性?还是还有其他问题?

1 个答案:

答案 0 :(得分:2)

  

我想知道从.net 4.5.2框架读取在.net-core中创建的DLL是否不兼容?

是的。 .NET Framework应用程序不能引用.NET Core程序集,反之亦然。这就是为什么有.NET Standard

.NET Standard项目可以从.NET Framework应用程序和.NET Core应用程序中引用。