Есть ли замена для MEF в .NET Core (или ASP.NET 5)

Мы знаем, что .NET Core (компоненты с открытым исходным кодом) являются лишь подмножеством полной .NET Framework и что ASP.NET 5 (и MVC 6) построен на .NET Core. Означает ли это, что Managed Extensibility Framework (MEF) недоступна в ASP.NET 5?

Если да, есть ли замена для динамической расширяемости, доступная в .NET Core?

У меня есть несколько приложений, которые используют MEF для динамической загрузки плагинов и внешних интеграций, и было бы очень жаль, если бы они были заблокированы в .NET Framework только потому, что они используют MEF.

Ответ 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"
    }
  }
}