Как воспроизвести команду диспетчера пакетов VS2017 Update-Package - переустановить с помощью Nuget CLI

Я пробовал с Nuget Update, Nuget restore, но на самом деле это не одно и то же, и вот почему:

Я создал пакет Nuget только для распространения исполняемого файла. Когда я устанавливаю Nuget, исполняемый файл добавляется в мой проект, поэтому я могу ссылаться на него и запускать его в своем приложении.

Теперь я не хочу, чтобы каждый разработчик устанавливал Nuget, чтобы иметь исполняемый файл в своем проекте, но я просто хочу, чтобы .exe добавлялся при сборке проекта. Ну и конечно ссылка на пакет в конфиге присутствует.

Если я запускаю Update-Package -Id -reinstall (используя диспетчер пакетов VS), папка с .exe добавляется в корень проекта, но если я делаю nuget update или nuget restore (используя CLI nuget), он только повторно добавляет .exe в папку пакетов .

Причина, по которой мне нужно запустить CLI nuget, заключается в том, что я использую TeamCity и хочу добавить .exe при запуске автоматической сборки.

Я надеюсь, что это имеет смысл.


person Sergio    schedule 18.07.2018    source источник
comment
Проверьте это: stackoverflow.com/q/17733307/7225096 Это старый вопрос, но imho ничего не изменилось с nuget 2.8.   -  person Peska    schedule 19.07.2018


Ответы (1)


Как воспроизвести команду диспетчера пакетов VS2017 «Update-Package -reinstall» с помощью Nuget CLI

Боюсь, вы НЕ можете делать такие вещи с NuGet CLI. Это связано с тем, что NuGet CLI не изменяет файл проекта или packages.config. Когда мы изменяем файл проекта, нам нужно сделать это с помощью NuGet API в Visual Studio, но только консоль диспетчера пакетов может предоставить доступ к объектам Visual Studio:

https://github.com/NuGet/Home/issues/1512

Вот почему я сказал, что проще всего использовать командную строку Update-Package -Id -reinstall в вашем предыдущая тема. Затем я также дал вам еще один способ решить эту проблему из основной причины, используя файл .targets для копирования исполняемого файла в корень проекта, пожалуйста, проверьте мой ответ на обновление.

Конечно, есть еще одна простая идея для решения этой проблемы, просто добавьте в свой проект событие перед сборкой, чтобы скопировать исполняемый файл в корень проекта:

xcopy  /Y "$(SolutionDir)packages\MyToolPackage.1.0.0\Tools\wkhtmltopdf.exe" "$(ProjectDir)"

Надеюсь это поможет.

person Leo Liu-MSFT    schedule 19.07.2018