Использование пакета Microsoft.AspNetCore.All в netstandard

В настоящий момент я переношу asp web api в.Net Core.

Api использует библиотеку классов, которая предоставляет некоторые реализации класса ActionFilterAttribute.

Поэтому я должен также переносить эту библиотеку классов. Когда я попытался добавить пакет nuget Microsoft.AspNetCore.All в библиотеку классов, я получил эту ошибку:

Пакет Microsoft.AspNetCore.All 2.0.0 несовместим с netstandard2.0

Когда я изменяю целевую структуру на netcoreapp2.0, я могу установить пакет, но, конечно, мне нужна точка входа для этого целевого типа.

Как создать библиотеку классов netcore, которая может использовать пакет Microsoft.AspNetCore.All

Привет

Ответы

Ответ 1

Метапакет Microsoft.AspNetCore.All доступен только для.NETCoreApp. Это по дизайну, так как оно явно предназначено как удобный пакет для веб-приложений, работающих на.NET Core. Чтобы работать с магией во время публикации (удаление неиспользуемых зависимостей), для этого требуется хранилище времени.NET Core, которое доступно только для самого.NET Core.

Все остальные проекты, в том числе проекты библиотек, работающие на.NET Standard, а также все проекты, которые выполняются на полной платформе.NET Framework, должны использовать отдельные ссылки на пакеты.

Поэтому вместо ссылки на Microsoft.AspNetCore.All вы будете ссылаться, например, на Microsoft.AspNetCore или Microsoft.AspNetCore.Mvc чтобы получить свой ActionFilterAttribute.

Ответ 2

Вы не можете (хорошо технически вы могли бы с помощью NuGet Fallback, но вы не должны, так как это может повлиять на вашу мобильность), и вы не должны.

Пакет .All - это мета-пакет удобства, поэтому вам не нужно ссылаться на дюжину или другие сборки даже для простейшего ASP.NET Core Project.

Он нацелен на.NET Core по какой-то причине, поэтому вы не можете использовать его в.NET Standard.

Когда вы публикуете приложение, неиспользуемые пакеты будут удалены. Когда вы делаете библиотеку классов, вам не нужна зависимость от всего, кроме только пакетов, требуемых вашим проектом.