Спрашивающий
nuget-сброка под разные платформы

Общие обсуждения
-
Кто подскажет, чтобы собрать сборку (библиотеку) под разные платформы для дальнейшей её публикации на nuget.org, что необходимо сделать?
Это несколько различных проектов нужно по отдельности компилировать, а затем выдёргивать из каждой dll-ки?
- Изменен тип Maksim MarinovMicrosoft contingent staff, Moderator 4 марта 2021 г. 13:51 тема неактивна
16 февраля 2021 г. 12:16
Все ответы
-
Здравтвуйте,
Ознакомьтесь с Nugitizer, может подойдет:
Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
16 февраля 2021 г. 15:29Модератор -
При использовании современного формата проекта (VS 2017+ или .NET Core SDK) ничего особенного делать не нужно. Вы выбираете несколько целевых платформ, устанавливаете GeneratePackageOnBuild, и тогда при сборке генерируется пакет с несколькими целевыми платформами. Файл проекта должен выглядеть как-то так:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>netstandard2.0;net45</TargetFrameworks> <GeneratePackageOnBuild>true</GeneratePackageOnBuild> </PropertyGroup> </Project>
При старом типе проекта или если это вовсе не msbuild, да, нужно вручную компоновать dll-ки в несколько подкаталогов в /lib, и потом паковать это командной строкой.
16 февраля 2021 г. 16:20 -
Допустим, а как быть с совместимостью с net451?
Изначально библиотеку писал под netstandard2.1, в рамках проекта было установлено несколько системных пакетов, теперь получаю ошибки следующего вида:
Пакет System.Text.Encoding.CodePages 5.0.0 несовместим с net451 (.NETFramework,Version=v4.5.1).
Пакет System.IO.Ports 5.0.0 несовместим с net451 (.NETFramework,Version=v4.5.1).Даже если я введу в коде логическое управление кодом на основе платформы, то как быть со связкой зависимостей?
17 февраля 2021 г. 4:39 -
Я так понимаю, это только для 2017 студии, для 2019 уже не актуально?17 февраля 2021 г. 4:40
-
Для связок зависимостей также можно ввести логическое управление на основе платформы:
<PropertyGroup Condition="'$(TargetFramework)'=='netstandard2.0'"> <PackageReference Include="..." Version="..." /> </PropertyGroup>
Что касается System.Text.Encoding.CodePages, System.IO.Ports, насколько я понимаю, эти пакеты в net framework не нужны, так как и кодировки, и работа с портами встроены в саму стандартную библиотеку.
>Я так понимаю, это только для 2017 студии, для 2019 уже не актуально?
То, что я написал, актуально и для VS 2017, и для VS2019.
17 февраля 2021 г. 5:58 -
>Я так понимаю, это только для 2017 студии, для 2019 уже не актуально?
То, что я написал, актуально и для VS 2017, и для VS2019.
Это относится к Nugitizer 3000, про него писал Maksim MarinovConcentrix(MSFT CSG).
А что касается логического управления завизимостей на основе платформы, сейчас поробую "выпилить" пакет из NET45.
17 февраля 2021 г. 6:09 -
Здравствуйте,
Судя по документации на Гите, к сожалению только под 2017.
Если Вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение" Мнения, высказанные здесь, являются отражение моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
22 февраля 2021 г. 14:09Модератор