2015-06-15 4 views
0

У меня есть спецификация nuget, которая устанавливает как файл библиотеки (dll), так и два почтовых пакета в определенной папке. Обновление пакетов без проблем при работе с Visual Studio 2013 вручную. Однако, когда он запускается из наших серверов CI TeamCity и CCNet, он обновляет только файл dll, а не два пакета zip.Как создать сценарий powershell, который запускает пакет обновления NuGet -reinstall?

Я предполагаю, что, поскольку в папках существуют существующие ранее zip-файлы, может возникнуть проблема с перезаписи файлов, поскольку в VS2013 запрос подтверждает, хочет ли пользователь перезаписать эти файлы.

Когда я использую консоль диспетчера пакетов из VS2013, я могу легко инициировать обновление пакета -reinstall [Идентификатор пакета], и он выполнит работу правильно. Теперь мне нужно сделать то же самое и применить некоторую автоматизацию с нашего CI-сервера.

Если я правильно понимаю, я могу вызвать команды nuget из powershell?

Я был бы очень признателен за ваши материалы, я не эксперт в этом.

+0

Вы можете вызывать любые exe-файлы из сценариев Powershell, поэтому, если ваш nuget предоставляет exe для запуска своих команд, да, вы можете. О перезаписи этих zip-файлов вы можете сделать «Копировать-Item $ source $ destination -force», это будет имитировать да для запроса перезаписи. Вполне возможно, что ваши серверы CI также имеют возможность принудительно перезаписывать файлы во время команды, поэтому просто ищите их руководства. – Vesper

+0

Привет Vesper, спасибо за входы. Как я могу назвать nuget из powershell? –

+0

Я думаю, вы должны установить [командную строку nuget] (https://docs.nuget.org/consume/command-line-reference) и использовать эти команды в качестве вызовов exe. Я не уверен, что как вызвать командную строку в контексте проекта, но вы можете найти что-то полезное из ссылочных данных. И есть 'FileConflictAction', вы можете установить' overwrite' для пересоздания ваших zip-файлов. – Vesper

ответ

1

Вы должны запустить update command from nuget.exe. Одним из параметров команды обновления является FileConflictAction, в котором говорится, какие действия следует предпринять, когда его попросят перезаписать или проигнорировать существующие файлы, на которые ссылается проект: overwrite, Ignore, None.

Возможно, вам придется обернуть все в сценарии powershell, возможно, ссылаясь на EnvDTE, чтобы установить ваши пути и сопоставить среду, которую вы используете, с консолью PowerShell в Visual Studio.