Недопустимый файл .nuspec: целевая платформа `Unsupported, Version = v0.0` не поддерживается

Так неловко спрашивать что-то, что так хорошо задокументировано, но я теряюсь из-за ошибки, которую я получаю, когда нажимаю свой пакет NuGet:

введите здесь описание изображения

System.AggregateException: произошла одна или несколько ошибок. ---> System.Net.Http.HttpRequestException: код состояния ответа не указывает на успех: 400 (пакет NuGet содержит недопустимый файл .nuspec. Произошла ошибка: 'Целевая платформа <сильная > Не поддерживается, версия = v0.0 не поддерживается. '. Исправьте ошибку и повторите попытку.).

Я использую задачу VSTS NuGet, чтобы отправить пакет на NuGet.org, который выдает вышеупомянутую ошибку. Нет ничего настраиваемого, только настройки по умолчанию:

В моем файле nuspec я перечислил зависимости, упрощенный пример:

<dependencies>
  <group targetFramework="netcoreapp">
    <dependency id="Microsoft.NETCore.App" version="2.0.0" exclude="Build,Analyzers" />
  </group>
  <group targetFramework="net462" />
  <group targetFramework="netstandard1.0" />
</dependencies>

Я предполагаю, что мой targetFramework установлен неправильно, но это соответствует документации NuGet Target Frameworks. Я пробовал целевые фреймворки, такие как netstandard и netcoreapp2.0, все они вызывают одну и ту же проблему.

Мои файлы пакета:

<files>
  <file src="bin\MINE.Core.dll" target="lib\netcoreapp\MINE.Core.dll" />
  <file src="bin\MINE.Core.NetFX.dll" target="lib\net462\MINE.Core.NetFX.dll" />
  <file src="bin\MINE.Core.PCL.dll" target="lib\netstandard1.0\MINE.Core.PCL.dll" />
  <file src="readme.core.txt" target="" />
</files>

Если я оставлю раздел dependencies пустым (<dependencies />), все будет работать отлично, за исключением того, что в пакете не указаны зависимости, которые я хотел бы включить. Кроме того, если я не использую группы и, следовательно, не ориентируюсь на фреймворки, а перечисляю все зависимые пакеты, все работает нормально.

Любой намек на решение этой (возможно, глупой) проблемы будет тепло оценен.


person Quality Catalyst    schedule 29.01.2018    source источник
comment
Попробуйте использовать более позднюю версию NuGet, чем версия 2. NuGet 2 не знает о .NET Standard.   -  person Matt Ward    schedule 29.01.2018
comment
@MattWard, он использует более позднюю версию nuget, чем версия 2. 2 на скриншоте выше - это версия задачи, которая обертывает nuget;) эта задача использует версию 4.0, если предыдущая задача nuget-installer не используется, в противном случае она использует версия, указанная в задаче nuget-installer. QualityCatalyst: есть ли в вашем определении задача Nuget-Installer и какая версия настроена?   -  person D.J.    schedule 29.01.2018
comment
@ D.J. Спасибо за разъяснения. Нет, у меня есть только задача NuGet Push согласно снимку экрана, который использует NuGet 4.1.0 согласно документации: docs.microsoft.com/en-us/vsts/build-release/tasks/package/nuget   -  person Quality Catalyst    schedule 29.01.2018
comment
@MattWard: я обновил изображение, чтобы отразить, что я использую NuGet версии 4.1.0.   -  person Quality Catalyst    schedule 29.01.2018
comment
Кажется, я не могу воспроизвести эту проблему. Каков подробный код Nuspec? Что будет, если отправить пакет вручную? Можете ли вы воспроизвести эту проблему на новом образце?   -  person starian chen-MSFT    schedule 30.01.2018
comment
@ starianchen-MSFT: Что такое подробный код Nuspec? Если вы ссылаетесь на сообщение HTTP-ответа от службы NuGet.org, это 400 ПЛОХОЙ ЗАПРОС - подробный код недоступен, поскольку журналы задачи NuGet скрывают его. Я вообще не нажимаю вручную, но в прошлом у меня были сотни автоматических толчков. Для упаковки я все еще использую устаревшую, но все еще работающую задачу NuGet Packager ... теперь, подумав об этом, мне, возможно, придется это изменить.   -  person Quality Catalyst    schedule 31.01.2018
comment
Я имею в виду содержимое файла nuspec. Можете ли вы поделиться подробным журналом в OneDrive (установите для переменной system.debug значение true)? Можете ли вы воспроизвести эту проблему на новом образце? Если да, вы можете поделиться образцом в OneDrive.   -  person starian chen-MSFT    schedule 31.01.2018
comment
Спасибо! Я получил первые признаки того, что использование устаревшей задачи NuGet Packager, которая создает пакеты NuGet, несколько недель назад создает несовместимый пакет NuGet. Дальнейшее расследование и доложу. Если это не так, я постараюсь предоставить подробный файл журнала.   -  person Quality Catalyst    schedule 31.01.2018


Ответы (1)


Проблема не в определении выпуска, а в определении сборки. Когда отправляемый пакет NuGet будет упакован, убедитесь, что используется правильная версия NuGet.

Например, устаревшая задача NuGet Packager в VSTS, используемая для упаковки, использует внутри более старую версию NuGet. Таким образом, замена задачи VSTS на рекомендуемую задачу NuGet решает проблему, и NuGet.org больше не будет жаловаться на некорректные файлы nuspec.

введите здесь описание изображения

person Quality Catalyst    schedule 01.02.2018
comment
@ starianchen-MSFT: Спасибо, что задали правильные вопросы. Это побудило меня проверить процесс упаковки, который, как оказалось, не поддерживался для использования последней версии NuGet 4.1.0. - person Quality Catalyst; 01.02.2018