Многоцелевые netstandard1.0 и netstandard2.0 бок о бок? - PullRequest
0 голосов
/ 16 января 2019

Когда я создаю многоцелевой .NET csproj, который нацелен на netstandard1.2, netstandard2.0 и net45, я должен включить оба netstandard monikers в раздел .csproj или достаточно упомянуть netstandard1 .2 (нижняя стандартная версия)?

Предложение A:

<TargetFrameworks>netstandard1.2;net45</TargetFrameworks>

Предложение B:

<TargetFrameworks>netstandard1.2;netstandard2.0;net45</TargetFrameworks>

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Когда я проверяю зависимости обоих пакетов NuGet (1) с <TargetFrameworks>netstandard1.2;net45</TargetFrameworks> и (2) с <TargetFrameworks>netstandard1.2;netstandard2.0;net45</TargetFrameworks>, я вижу, что netstandard1.2 включает NETStandard .Library (> = 1.6.1) , что, вероятно, является "графом зависимостей", описанным в ответе @ Baruch.

Зависимости ObjectDumper.Net (1)

ObjectDumper.NET with netstandard1.2 only

Зависимости ObjectDumper.Net (2)

ObjectDumper.NET with netstandard1.2 and netstandard2.0

Насколько мне известно, я могу использовать <TargetFrameworks>netstandard1.2;net45</TargetFrameworks>, если я хочу поддерживать оба, netstandard1.2 и netstandard2.0. Проект netstandard2.0, использующий пакет netstandard1.2 NuGet, ссылается на NETStandard.Library 2.0.3 (который удовлетворяет минимальным требованиям> = 1.6.1). Таким образом, ненужные пакеты NuGet не будут установлены.

0 голосов
/ 16 января 2019

Да, есть разница между поведением netstandard1.x и netstandard2.x.

Из Документы Microsoft :

✔️ НЕОБХОДИМО включить цель netstandard2.0, если вам нужна цель netstandard1.x.

Все платформы, поддерживающие .NET Standard 2.0, будут использовать цель netstandard2.0 и получат выгоду от меньшего количества пакетов, в то время как старые платформы будут работать и использовать цель netstandard1.x.

И один абзац выше объясняет разницу:

.NET Standard 1.x распространяется в виде детального набора пакетов NuGet, который создает большой граф зависимостей пакетов и приводит к тому, что разработчики загружают много пакетов при сборке. Современные платформы .NET, включая .NET Framework 4.6.1, UWP и Xamarin, поддерживают .NET Standard 2.0. Вы должны ориентироваться на .NET Standard 1.x только в том случае, если вам конкретно нужно ориентироваться на более старую платформу.

netstandard1.x поддерживает 2 фреймворка, используя nugets, что вызывает импорт многих пакетов.

...