如何在.net核心中使用.net标准?

时间:2017-07-17 15:15:49

标签: c# asp.net-core

我不认为我的问题本身就是对我的问题的描述,所以我将描述我在做什么,以及我是如何做到这一点的。

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

在阅读.net标准之后,我的印象是它提供了一组API来弥补.net核心与.net框架之间的差距。作为演示,我创建了一个包含3个项目的解决方案。 .net核心项目,.net标准项目和.net框架项目。 Core项目引用Standard项目,Standard项目调用Framework项目中的一些代码。我将此模型基于Announcing .NET Core 2.0 Preview 2 (从.NET Standard&#34向下滚动到"参考.NET Framework库)。

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

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

有没有办法指定我想从.net标准SDK而不是.net Core SDK加载程序集?如果标准dll将被忽略,似乎将它们串联使用没有任何好处。这是我的设置的截图和我得到的例外。

My exception

我对这里的基本面有误解吗?

由于

1 个答案:

答案 0 :(得分:0)

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

如果您的项目引用程序集,您应该看到警告,表明情况就是这样(小黄三角)

我发现这篇文章很有用 https://msdn.microsoft.com/en-us/magazine/mt842506.aspx?f=255&MSPPError=-2147217396