System.Web.ApplicationServices в .NET Core 2

Я создаю веб-API в .NET Core 2. Я использую некоторые пользовательские пакеты nuget, чтобы использовать их встроенные функции. Эти пользовательские пакеты были созданы для более старой версии .NET (4.6.1). Проблема в том, что некоторые из этих пакетов имеют ссылки на старую dll System.Web. Я получаю это предупреждение о некоторых пользовательских пакетах в решении

пакет был восстановлен с использованием '.net framework version=v4.6.1 вместо использования целевой платформы proj.

Приложение также выдает это исключение ниже, когда я вызываю код в одном из пользовательских пакетов.

System.IO.FileNotFoundException: не удалось загрузить файл или сборку System.Web.ApplicationServices, версия = 4.0.0.0, культура = нейтральная, система не может найти указанный файл

Есть ли способ обойти это, кроме как переписать код в моем веб-API?


person Del Habington    schedule 01.08.2018    source источник
comment
Вам потребуется создать версии .NET Standard ваших пользовательских пакетов nuget. Миграция с веб-API ASP.NET на MVC 6 может помочь. См. также Обмен библиотеками между .Net Приложения Core и .Net Framework.   -  person Mark G    schedule 01.08.2018


Ответы (1)


System.Web совершенно несовместим с Core. Хотя Microsoft открыла пакеты NuGet, нацеленные на .NET Framework, для использования с .NET Core, она сделала это только на основе совместимости с .NET Standard 2.0 и не дает никаких гарантий, что пакеты будут работать частично или полностью. На самом деле вы получите предупреждение во время компиляции, говорящее вам об этом. Кроме того, хотя у вас действительно может быть что-то вроде приложения ASP.NET Core, предназначенного для .NET Framework, опять же, совместимость сторонних компонентов не гарантируется просто потому, что они предназначены для одной и той же платформы.

Короче говоря, если вообще есть какая-то зависимость от System.Web, вы не можете ее использовать.

person Chris Pratt    schedule 01.08.2018
comment
Спасибо, Крис, ценю разъяснения - person Del Habington; 02.08.2018