Какой стандарт .net можно использовать в nuget для модели данных? - PullRequest
0 голосов
/ 28 июня 2019

Я отправляю данные в формате json между моими приложениями. Один работает в .NET Core, другой - в .NET Framework. Поскольку в будущем этот же формат данных может использоваться другими приложениями, я хотел сделать его максимально легким в использовании. Поэтому я создал его как проект .NET Standard 1.0, добавил файл nuspec и OctoPack, чтобы опубликовать ньюгет в TeamCity в нашем локальном фиде.

Теперь в обзоре кода я получил примечание, что я должен либо настроить таргетинг на netstandard2.0 вместо netstandard1.0, либо, по крайней мере, я должен создать nuget с несколькими целями. Это требование правильно? Это не имеет смысла для меня. Поскольку мой nuget не использует никаких других библиотек, он просто предоставляет простые классы DTO, которые будут использоваться для файлов json. Я думаю, что когда я не потребляю нюгет, то netstandard1.0 - лучшая цель. И я думаю, что нет смысла создавать несколько целей (netstandard1.0 и 2.0), поскольку они оба будут иметь одинаковые двоичные файлы.

Пожалуйста, кто-нибудь может уточнить это? Есть ли веб-страница Microsoft, которая явно рекомендует использовать самую низкую версию .NET Standard в моем случае, или это просто моя ложная идея?

1 Ответ

0 голосов
/ 28 июня 2019

Когда я гуглю ".NET Standard", в первом результате я получаю ссылки на эту страницу , в которой есть таблица, показывающая минимальное поддерживаемое время выполнения для каждой версии .NET Standard, а также кучукомментарий.На этой странице есть ссылка на интерактивную таблицу , которую предпочитают некоторые люди.

Сказав, что в целом да, лучше просто использовать .NET Standard 2.0.Хотя NuGet и компилятор технически позволяют .NET 4.6.1 и выше использовать .NET Standard, они были выпущены до появления .NET Core / Standard, и некоторые люди сталкиваются с множеством проблем, потому что совместимость на самом деле не на 100%.Менее проблематично использовать .NET 4.7.2 или выше, что, я думаю, является первой версией .NET Framework, выпущенной после .NET Core и фактически работает должным образом во всех случаях (насколько я знаю), но поддерживает .NETStandard 2.0, что делает все версии .NET Standard 1.x бессмысленными для совместимости .NET Framework.Сборка только с классами DTO не столкнется с какими-либо проблемами, связанными с совместимостью, но некоторые люди предпочитают просто притворяться, что .NET Standard начался с 2.0, а .NET Framework поддерживает .NET Standard с 4.7.2, потому что его легче запомнитьэто единственное правило, чем анализировать каждую ситуацию.

В дополнение к этому, я не рекомендую использовать nuspec для упаковки проектов в стиле SDK (таких как .NET Standard или .NET Core) или проектов не в стиле SDKкоторые используют PackageReference.Лучше использовать dotnet pack или msbuild -t:pack.Вы можете указать любые метаданные NuGet в своем csproj как свойства MSBuild .

...