我认为我的问题本身并没有很好地描述我的问题,所以我将描述我正在做什么,以及我如何尝试去做。
我们有一个旧的项目,利用MEFS的各种插件。我们正在尝试将其转换为dotnet核心应用程序,以便将其部署到不同的操作系统。据我所读,.net核心仅部分支持MEFS。Microsoft.Composition为插件提供了一些基本支持,但是没有Microsoft.Componentmodel.Composition,所以不能从目录加载插件(这就是我需要做的)。
在阅读了.net标准之后,我的印象是它提供了一组API来弥合.net核心和.net框架之间的差距。作为一个演示,我已经创建了一个有3个项目的解决方案。.net核心项目、.net标准项目和.net框架项目。核心项目引用标准项目,标准项目在Framework项目中调用一些代码。我把这个模型建立在发布.NET Core2.0预览2上(向下滚动到“参考.NET标准的.NET框架库”)。
我发现的问题是我的框架代码总是抛出一个TypeInitializationException。我相信,在编译代码时,它从.net标准框架中识别出一个库,但在运行时,它实际上使用的是.net核心框架中的同一个库(这更轻巧,而且遗漏了一些东西)。
我所指的类是System.ComponentModel.Composition.Hosting.AggregateCatalog
是否有一种方法可以指定我希望从.net标准SDK而不是.net核心SDK加载程序集?如果标准dll被忽略的话,同步使用它们似乎没有好处。这是我的设置和例外情况的屏幕截图。

我只是对这里的基本原理有误解吗?
谢谢
发布于 2018-04-14 08:03:35
我的理解是,.Net标准是所有框架引用的通用API,在您的问题中,您暗示您的标准项目正在调用框架项目中的代码,我相信这可能是项目抛出异常的原因。
当您的项目引用程序集时,您应该会看到指示情况的警告(小黄色三角形)。
我发现这篇文章很有用https://msdn.microsoft.com/en-us/magazine/mt842506.aspx?f=255&MSPPError=-2147217396
https://stackoverflow.com/questions/45147859
复制相似问题