C# 如何将.net标准与.net核心一起使用?

C# 如何将.net标准与.net核心一起使用?,c#,asp.net-core,C#,Asp.net Core,我认为我的问题本身并不能很好地描述我的问题,所以我将描述我正在做什么以及我是如何尝试去做的 我们有一个老项目,它将MEF用于各种插件。我们正在尝试将其转换为dotnet核心应用程序,以便将其部署到不同的操作系统。据我所知,.net核心仅部分支持MEF。Microsoft.Composition为插件提供了一些基本支持,但没有Microsoft.Componentmodel.Composition,因此您无法从目录加载插件(这是我需要做的) 在阅读了有关.net标准的内容后,我的印象是它提供了一套

我认为我的问题本身并不能很好地描述我的问题,所以我将描述我正在做什么以及我是如何尝试去做的

我们有一个老项目,它将MEF用于各种插件。我们正在尝试将其转换为dotnet核心应用程序,以便将其部署到不同的操作系统。据我所知,.net核心仅部分支持MEF。Microsoft.Composition为插件提供了一些基本支持,但没有Microsoft.Componentmodel.Composition,因此您无法从目录加载插件(这是我需要做的)

在阅读了有关.net标准的内容后,我的印象是它提供了一套API,弥补了.net核心和.net框架之间的差距。作为演示,我创建了一个包含3个项目的解决方案。net核心项目、.net标准项目和.net框架项目。核心项目引用标准项目,标准项目调用框架项目中的一些代码。我基于此模型(向下滚动至“参考.NET标准中的.NET框架库”)

我发现的问题是,我的框架代码总是抛出TypeInitializationException。我相信,在编译代码时,它会识别来自.net标准框架的库,但在运行时,它实际上使用的是.net核心框架中的同一个库(它更轻,并且遗漏了一些东西)

我引用的类是System.ComponentModel.Composition.Hosting.AggregateCatalog

有没有办法指定我要从.net标准SDK而不是.net核心SDK加载程序集?如果忽略标准DLL,那么同时使用它们似乎没有任何好处。这是我的设置和我得到的异常的屏幕截图

我只是对这里的基本原理有误解吗


谢谢

我的理解是.Net标准是所有框架引用的通用API,在您的问题中,您暗示您的标准项目正在框架项目中调用代码,我相信这可能是项目引发异常的原因

在项目引用程序集的地方,您应该会看到警告,表明情况就是这样(小黄色三角形)

我觉得这篇文章很有用

在这里阅读.NET标准-简而言之,它只是一个摘要definition@SirRufo我观看了.NETCore2.0的介绍,他们让人感觉标准将统一核心和框架,至少在某种程度上,这样您就可以部署到各种操作系统。我想我误解了?这是否意味着无法利用System.ComponentModel.Composition的框架版本?