Хобрук: Ваш путь к мастерству в программировании

Обертывание/преобразование библиотек .NET в .NET Core

Я хочу преобразовать существующий API ASP.NET, созданный для .NET 4.6, в ASP.NET Core. Из небольшого тестирования, которое я провел, мне нравится то, что я вижу с .NET Core — это быстрее и дает возможность работать в Linux.

Но самая большая проблема, с которой я столкнулся, заключается в том, что многие библиотеки с открытым исходным кодом, которые были написаны с использованием полной .NET F/W, все еще не совместимы с ней (и никакой информации не дается, если они когда-либо будут). Так внезапно .NET Core теряет большую часть своей привлекательности.

Мой вопрос: есть ли способ использовать существующие библиотеки nuget в .NET Core? Есть ли способ обернуть их, чтобы заставить их работать? если нет, то как можно преобразовать полную библиотеку .NET F/W в .NET Core? надо полностью переписывать?


  • Извините, вопрос слишком широкий, особенно конвертация. Запустите анализатор переносимости .NET visualstudiogallery.msdn.microsoft.com/ для подсказки, но это зависит от случая. Некоторые из них могут быть перенесены с приличным объемом работы, другим может потребоваться серьезная переработка для обеспечения совместимости. Это зависит от того, сколько и какой API использует библиотека. Лучше всего использовать ASP.NET Core с полной версией .NET Framework и медленно переносить или заменять определенные библиотеки на совместимые с .NET. 16.09.2016
  • .NET Core на данном этапе не сможет удовлетворить ваши потребности. Придерживайтесь .NET Framework и подождите, пока проекты с открытым исходным кодом не будут перенесены с более богатым API, который Microsoft предоставляет в более поздних выпусках .NET Core. 16.09.2016
  • @ Ценг хорошо. Я установил анализатор переносимости и запустил его в проекте, который скачал с gitug. он показывает, что проходит 100%. Но это все, что он говорит — проверяет ли он специально для .NET Core? И теперь, когда он прошел, каков мой следующий шаг по преобразованию его в .NET Core? 17.09.2016
  • Не могли бы вы назвать библиотеку? Некоторые библиотеки с поддержкой UWP можно использовать как есть, если они не используют специфические функции Windows/Windows Phone, такие как классы пользовательского интерфейса. Если анализатор переносимости не показывает ошибок, попробуйте добавить в исходники файл project.json/*.xproj и добавьте нужный вам таргет (netstandard1.x) и скомпилируйте его 17.09.2016
  • Я пробовал оба пакета Facebook sdk, которые я клонировал из github и PushSharp. 17.09.2016

Ответы:


1

У вас есть API-интерфейсы, созданные с использованием полной версии .NET Framework, и вы хотите скомпилировать их в .NET Core (CoreFx). Это не делается вручную нами прямо сейчас. Если вы хотите, вы должны создать PCL.

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

Есть еще одна возможность: вы также можете использовать библиотеки .NET Framework с .NET Core, но они будут совместимы только с Windows.

16.09.2016
  • Но весь смысл .NET Core не в том, чтобы использовать весь фреймворк, верно? это полная прошивка, которая делает приложения .NET такими тяжелыми сегодня? или есть ли другие преимущества использования .NET Core с полной прошивкой? 16.09.2016
  • Правильнее было бы сказать, что .NET Core — это оптимизированная версия .NET Framework. .NET Framework включает множество других подплатформ, таких как WPF, Windows Forms и другие. На данный момент вы не можете использовать все эти подфреймворки с .NET Core. Первый, который вы можете использовать, — это ASPNET Core. Подробнее об экосистеме можно прочитать в моем блоге ниже: kjanshair.azurewebsites.net/fundamentals/dotnetcore 16.09.2016

  • 2

    [Есть ли] способ использовать существующие библиотеки nuget в .NET Core?

    Да, если эти библиотеки являются переносимыми (PCL). Хотя возможно, что переносимая библиотека использует API, которые не поддерживаются в .Net Core, поэтому, чтобы попытаться использовать такие библиотеки, вам нужно использовать "imports" в вашем проекте.json.

    Для библиотек .Net Framework перекомпиляция необходима (но, вероятно, недостаточна).

    В качестве альтернативы вы можете использовать ASP.NET Core на .Net Framework. Таким образом, вы получаете некоторые улучшения производительности, сохраняя при этом возможность использовать все возможности .Net Framework. Но вы теряете переносимость на Linux и Mac OS (если не считать моно).

    Есть ли способ обернуть [библиотеки .Net Framework], чтобы они работали [на .Net Core]?

    Насколько я знаю, нет.

    Как можно преобразовать полную библиотеку .NET F/W в .NET Core? Его нужно полностью переписывать?

    Как правило, его не нужно полностью переписывать. Но вам придется изменить его части, которые не поддерживаются в .Net Core.

    Хотя, если подождать, ситуация исправится, так как многие API, которые изначально были исключены из .Net Core, скоро вернутся. Это может быть одной из причин, по которой некоторые авторы библиотек не спешат поддерживать .Net Core.

    16.09.2016
    Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..