Миграция Dll, построенной на .Net v4.0, на .Net Core 1.0

У меня есть библиотека dotnet (dll), созданная на базе dotnet framework v4.0. Теперь мы хотим использовать эту dll в .Net Core framework 1.0.

Возможно ли, что старые библиотеки, созданные с использованием предыдущей версии фреймворка dotnet, такой как v4.0, можно напрямую использовать в .Net Core 1.0?

Если да, то как это сделать? Если нет, то что нужно сделать для поддержки с .Net Core 1.0.

Я просмотрел различные блоги msdn, но смог найти любое решение для консольных приложений. У них было много о ядре ASP.Net, но меньше о .Net Core App.


person User1234    schedule 23.08.2016    source источник
comment
Этот вопрос слишком широк, чтобы на него можно было ответить на SO. Установите в своем VS 2015 и запустите его в своей библиотеке 4.0 и посмотрите, какие приложения несовместимы, и измените/удалите/замените их вызовами API, совместимыми с .NET Core.   -  person Tseng    schedule 23.08.2016
comment
@Tseng это действительно помогло. Но после установки этого расширения он не показывает .Net Core в списке целевых платформ, вместо этого показывает ASP.Net Core.   -  person User1234    schedule 23.08.2016


Ответы (2)


Его нельзя использовать напрямую в .NET Core 1.0, но его можно портировать.

Первое, что вы должны сделать, это протестировать свою DLL в .NET Portability. Анализатор.

Этот инструмент покажет вам очень наглядно, какие методы (и связанные с ними классы и пространства имен) вы используете, которые не поддерживаются в .NET Core 1.0.

В зависимости от возможности (это зависит от вас, вы знаете свой код), вы можете попытаться избавиться от этих классов/методов и заменить их кодом, совместимым с .NET Core 1.0.

Примеры функций, не поддерживаемых в .NET Core 1.0:

  • AppDomains (для изоляции кода, динамической загрузки сборок)
  • удаленное взаимодействие
  • Двоичная сериализация

Дополнительные сведения см. в документации Core FX github

Чтобы попытаться перенести вашу DLL:

  • избавиться от csproj
  • замените его на project.json (правильно настроенный для .NET Core 1.0)
  • открыть проект в visual studio 2015
  • попробуй его скомпилировать
  • анализировать ошибки и исправлять их
  • повторять (вероятно, много раз :) )

Удачи !

person Pierre Murasso    schedule 23.08.2016

Нет, напрямую использовать сборку .NET Framework в .NET Core невозможно.

Существует множество API, недоступных в .NET Core (по крайней мере, на данный момент). Подумайте, например, что Registry API не имеет смысла для кроссплатформенности.

Вам нужно вручную портировать исходный код и пересобрать его.

Существует новый тип библиотеки, который называется стандарт .NET, поэтому, если вы портируете свой исходный код, ориентированный на это, вы сможете запускать его на .NET Framework и .NET core

person Community    schedule 23.08.2016