Можно ли добавить ссылку на DLL-библиотеку.NET Framework из проекта.NET 5?
Microsoft недавно объявила на Build 2019, что следующая основная версия.NET объединит.NET Core 3.* и.NET Framework 4.* в единую платформу.NET, основной номер которой будет 5.
Я не очень хорошо понял, означает ли это, что с помощью.NET 5 я смогу добавить ссылки на библиотеки, написанные в обеих версиях.NET?
Например, проект.NET 5, ссылающийся на 2 сборки, одна из которых была скомпилирована для.NET Core 3, а другая - для.NET Framework 4.5 (в данном случае, поскольку она ссылается на библиотеку.NET Framework, я думаю, что она сможет работать на Windows).
4 ответа
Это будет так же, как сегодня: вы сможете ссылаться на библиотеки.NET Standard..NET 5 не содержит всего классического фреймворка, поэтому будет невозможно ссылаться на сборку.NET 4.x напрямую. Поэтому начинайте писать библиотеки в.NET Standard.
Однако в.NET Core 2.0 Microsoft внедрила совместимость, которая позволяет пересылку типов отсутствующих типов в старых сборках новому типу. Пока ваша библиотека не использует классы, которые не поддерживаются.NET 5, вы в безопасности.
Смотрите этот пост или это для получения дополнительной информации.
.NET 5 будет иметь тот же уровень совместимости, что и.NET Core в настоящее время.
Это позволяет ссылаться на DLL-библиотеки.NET Framework с оговоркой, что DLL может не загружаться или не выполняться во время выполнения. Если это логическая библиотека, она может хорошо работать. Не очень много, если это облегчает, например, System.Web
, Это особенно полезно для сторонних библиотек, для которых у вас нет исходного кода. Вы можете использовать анализатор переносимости.NET для проверки любого использования неподдерживаемых API в таких библиотеках.
При этом вы должны попытаться изменить существующие библиотеки.NET Framework на.NET Standard или многоцелевые на бот.NET Framework и.NET Standard.
Это отличный вопрос, на который я потратил довольно много времени, пытаясь ответить для себя. Одна вещь, которая действительно помогла мне, - это осознание того, что .NET 5.0 на самом деле является просто следующей версией .NET Core.
Это видео на отметке 24:30 действительно хорошо иллюстрирует эту мысль:https://www.youtube.com/watch?v=4WJHCvwE2VM
Имея это в виду, мы можем видеть, что все будет продолжать работать так же, как в .NET Core 2.0 и более ранних версиях, где, если вы хотите использовать классический код .NET Framework, вы должны сначала переместить этот код в класс .NET Standard. библиотека.
Поскольку.Net не обладает всеми функциональными возможностями, как у.net classic. Вы можете использовать любую DLL от классической до более новой версии, но я также использовал библиотеки из VB в C# и наоборот.
Однако есть одна проблема, поскольку библиотеки не вызывают никаких неподдерживаемых API или API, которые прекратили поддержку или были закрыты, что будет проблемой.