Упаковка пакета nuget в VSTS «Newtonsoft.Json» уже имеет зависимость, определенную для «NETStandard.Library».

Упаковка сборки использует Nuget Packager в VSTS, и я получаю сообщение об ошибке:

[ошибка] «Newtonsoft.Json» уже имеет зависимость, определенную для «NETStandard.Library».

Большинство подсказок, которые решают эту проблему, включают обновление nuget, но, поскольку я использую Team Services, я не могу этого сделать.


person ruffen    schedule 19.06.2017    source источник
comment
Я сегодня тоже наткнулся на это.   -  person Ed Blankenship    schedule 20.06.2017
comment
Каковы подробные шаги для воспроизведения этой проблемы? Используете ли вы Hosted Agent? Какой тип проекта вы использовали? Что получится, если упаковать его через инструмент NuGet.exe вручную?   -  person starian chen-MSFT    schedule 20.06.2017
comment
Вы можете указать путь к инструменту Nuget.exe для задачи пакета NuGet (дополнительно).   -  person starian chen-MSFT    schedule 20.06.2017
comment
Я создаю с помощью агента Hosted Visual Studio 2017 и упаковываю с помощью упаковщика nuget. Мне удалось решить эту проблему, используя powershell для загрузки nuget.exe и указания упаковщика на этот новый экземпляр.   -  person ruffen    schedule 20.06.2017
comment
@ruffen Я получаю ту же ошибку в локальной TFS, поэтому тег tfs подходит для вашего вопроса. Почему ты удалил его?   -  person FIL    schedule 08.11.2017
comment
@FIL Потому что вопрос сформулирован с учетом VSTS, а не TFS. TFS также отличается от VSTS, потому что вы по своей сути имеете больший контроль над машиной, на которой работает TFS. Допустимым решением для TFS было бы обновить nuget на машине (так же, как агент частной сборки), вместо того, чтобы каждый раз загружать новый или добавлять последний nuget в репозиторий, что кажется единственным жизнеспособным решением для VSTS с размещенные агенты сборки. Я рад добавить его обратно, если вы обосноваете это.   -  person ruffen    schedule 29.11.2017
comment
@ruffen Я понимаю твою точку зрения. Хотя проблема возникает как в VSTS, так и в TFS с немного другим решением, поэтому лучшим способом будет пометить вопрос тегами TFS и VSTS и предоставить ответ с разделением на касающиеся VSTS и касающиеся TFS.   -  person FIL    schedule 30.11.2017
comment
@FIL Я снова добавил тег TFS и изменил свой ответ, чтобы отразить, что мое решение предназначено для VSTS и не рекомендуется для TFS.   -  person ruffen    schedule 30.11.2017


Ответы (3)


Была такая же проблема сегодня.

Использование собственного агента сборки

Если вы используете собственные агенты сборки (а не размещенный агент), вы можете вручную обновить версию NuGet до последней версии. В моем случае это решило мои проблемы.

например C:\agent\externals\nuget\nuget.exe

Использование размещенного агента

Это немного запутанно, но вы можете просто загрузить последнюю версию nuget.exe в репозиторий и настроить NuGet Packager на ее использование.

person Tim Porter    schedule 20.06.2017
comment
Это тоже сработает, я решил это, используя powershell, чтобы загрузить последнюю версию nuget и использовать ее. - person ruffen; 20.06.2017

Кажется, что nuget, используемый упаковщиком nuget, не самый последний. После локального тестирования с последней версией nuget.exe все заработало, поэтому я добавил новый шаг выпуска powershell. Это решение подходит для VSTS, для TFS, где у вас есть доступ к серверу, я рекомендую обновить nuget.exe на самом сервере:

Этап встроенной сборки PowerShell — загрузка nuget.exe

Этот сценарий загружает nuget.exe в каталог артефактов (и выводит путь к nuget.exe, чтобы вы могли видеть, куда он помещен).

Затем я изменил шаг сборки Nuget Packager, чтобы использовать только что загруженный файл nuget.exe. Этап сборки Nuget Packager с настраиваемым путем к nuget.exe

person ruffen    schedule 20.06.2017
comment
Привет и спасибо за это, так как это решает проблему, с которой я сталкиваюсь. Тем не менее, я никогда не работал с powershells. Не могли бы вы рассказать мне или поделиться ссылкой, чтобы я знал, как добавить шаг powershell и как изменить сборку Nuget, чтобы я мог повторить то, что вы сделали? Заранее спасибо. - person Daniel Sh.; 29.06.2017
comment
Вы в значительной степени просто копируете то, что я добавил на картинке. Я использовал встроенный скрипт сборки powershell. Далее следует этап сборки nuget packager, здесь вы можете просто воспроизвести то, что находится во втором образе. - person ruffen; 29.06.2017

Для всех, кто получил это в 2018 году, Microsoft создала новую версию задачи NuGet, которая устраняет эту проблему. Нет необходимости в шагах установки powershell.

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

Измените версию задачи NuGet в версии шага сборки на 2.*

Это вызвало у меня некоторые критические изменения, которые я решил с помощью следующих дополнительных настроек.

Восстановление Nuget

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

Пакет Nuget

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

Отправка Nuget

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

person edqwerty    schedule 08.02.2018
comment
Вы используете VSTS или локальную установку TFS? - person Salman Hasrat Khan; 05.04.2018