У меня есть библиотека классов C #, предназначенная для .NET 4.7.2, для которой я использую VSTS для сборки и развертывания в частном фиде пакетов NuGet всякий раз, когда я нажимаю коммит. Это все отлично работает.
У меня также есть устаревший проект, нацеленный на .NET 4.0, в котором я хотел бы использовать вышеуказанную библиотеку. Я создал новую ветвь своей библиотеки и перенес ее на целевой .NET 4.0 (пришлось удалить некоторые неподдерживаемые функции) и создал новую сборку VSTS CI, которая вызывается толчками в этой ветке. Опять все работает нормально.
Проблема в том, что полученный пакет NuGet просто отображается как новая версия .NET 4.7.2! В идеале я хотел бы, чтобы в моем личном фиде отображались 2 пакета: MyPackage
и MyPackage.dotnet40
Это вообще возможно? Или я должен делать что-то совершенно другое?
решаемые
Благодаря ответу @ DanielMann, приведенному ниже, я решил эту проблему, добавив файл .nuspec
в свой проект и реконфигурировав (слегка) задачу пакета NuGet в своем определении сборки VSTS:
- перейдите к project root (не решение) в командной строке
- запустите
nuget spec
, чтобы создать файл .nuspec
вместе с файлом .csproj
(может потребоваться добавить nuget.exe
к вашей переменной PATH)
- заполните файл
.nuspec
. Я заменил все заполнители, кроме $version$
, который VSTS автоматически заменяет, но вы можете указать значения для всех заполнителей в задаче пакета Nuget в разделе «Дополнения»> «Дополнительные свойства сборки». Важным является заполнитель $id$
, замените его так, как вы хотите, чтобы ваш пакет назывался
- добавить
.nuspec
к управлению исходным кодом и зафиксировать / нажать
- обновите задачу пакета NuGet так, чтобы она указывала на ваш новый файл
.nuspec
, а не на .csproj
файл