Есть ли способ автоматически обновить nuget.exe в папке.nuget при использовании восстановления пакета?

Моя команда использует опцию Enable Package Restore, начиная с Nuget 1.5, чтобы не допустить попадания пакетов в нашу систему контроля версий. Когда был выпущен Nuget 1.6, мы заметили проблему, из-за которой он не тянул пакеты, и отследили его до Nuget.exe в папке.nuget, которую нужно обновить до 1.6, чтобы он соответствовал диспетчеру пакетов.

Какой лучший способ обновить решение после обновления Nuget? Я не вижу простого способа узнать, какая версия nuget находится в папке решения. Пока что мы сдули папку.nuget и повторно запустили команду "Включить восстановление пакета".

3 ответа

Решение

Я бы предложил обновить.nuget\nuget.exe с помощью этой команды из командной строки:

nuget.exe update -self

[РЕДАКТИРОВАТЬ]: Сначала закройте VS Solution. Если есть обновление и решение открыто, nuget.exe будет удален из решения.

Вы можете автоматически обновить nuget.exe при восстановлении, изменив.nuget \ nuget.targets, добавив указанную выше команду. Я бы посмотрел на команду восстановления там в качестве примера. Но я не уверен, стоит ли это того, обновления nuget.exe встречаются не так часто, и обратная совместимость должна нарушаться очень редко.

Я нашел лучший способ справиться с этим, просто удалив папку.nuget и повторно включив решение для полного восстановления пакета. Как сказано выше, вы можете добавить команду самообновления в свою сборку, но это не приведет к обновлению целей или файлов конфигурации, если между версиями произошли изменения (или удаление ссылки из вашего решения). Возможно, это не такая уж большая проблема, но это верный способ убедиться, что у вас есть последние exe и файлы конфигурации. И, в конце концов, обновление является проблемой только в том случае, если вам нужен доступ к новой команде или в конечном итоге произошли серьезные изменения в новом выпуске.

Посмотрите сообщение Дэвида Эббо в его блоге

По сути, все, что вам нужно сделать, это создать файл NuGet.Config рядом с вашим файлом.sln, содержащий:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear/>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="aspnetwebstacknightlyrelease" value="https://www.myget.org/f/aspnetwebstacknightlyrelease/" />
  </packageSources>
</configuration>
Другие вопросы по тегам