.NET Core(或 ASP.NET 5)中是不是有 MEF 的替代品

Posted

技术标签:

【中文标题】.NET Core(或 ASP.NET 5)中是不是有 MEF 的替代品【英文标题】:Is there a replacement for MEF in .NET Core (or ASP.NET 5).NET Core(或 ASP.NET 5)中是否有 MEF 的替代品 【发布时间】:2015-05-02 07:18:19 【问题描述】:

我们知道 .NET Core(开源组件)只是完整 .NET Framework 的一个子集,而 ASP.NET 5(和 MVC 6)是基于 .NET Core 构建的。这是否意味着托管可扩展性框架 (MEF) 在 ASP.NET 5 中不可用?

如果是,是否有任何替代 .NET Core 中可用的动态可扩展性?

我有许多使用 MEF 来动态加载插件和外部集成的应用程序,如果它们仅仅因为使用 MEF 而被锁定在 .NET Framework 中,那就太可惜了。

【问题讨论】:

.Net 4.6 预览版绝对支持 MEF。 你也可以使用nuget.org/packages/microsoft.composition @Claies 我注意到了,但 4.6 只是完整的框架,没有核心。 MEF 没有出现在 corefx 存储库中,所以我不确定它是否包含在内。此外,该 NuGet 包列出仅在 .NET Framework 上受支持,但如果它在 PCL 中工作,我也许可以从 vNext/5 项目中引用它.. 【参考方案1】:

现有的 NuGet 包应该可以工作。它是可移植的,并且 .NET Core 是可移植 API 表面的向后兼容演变。 ASP.NET Core 不会自动安装它,但是因为包没有明确说明它与 .NET Core 兼容。

要安装该软件包,您需要将imports 部分添加到您的project.json


  "dependencies": 
    "Microsoft.Composition": "1.0.30"
  ,
  "frameworks": 
    "netcoreapp1.0": 
      "imports": "portable-net45+win8"
    
  

【讨论】:

哪个现有包?现在好像有好几个了。 Microsoft.Composition,但现在您可能需要将"imports": "portable-net45+win8" 添加到您的project.json 针对当前情况修改了答案。

以上是关于.NET Core(或 ASP.NET 5)中是不是有 MEF 的替代品的主要内容,如果未能解决你的问题,请参考以下文章

asp.net core 系列 5 MVC框架路由(上)

通过 IIS ARR 的客户端关联/粘性会话是不是适用于 ASP.NET Core 3+/.NET 5?

ASP.NET Core 5.0.3 Hosting Bundle 是不是会影响已托管的 .Net 框架应用程序

ASP.NET Core Web API 应用程序是不是可能出现死锁或应用程序挂起状态

Microsoft 是不是仍支持 .NET Framework 上的 ASP.NET Core?

ASP.net core MVC Framework 5 Formdata在附加图像时类型不正确