Чи існує спосіб автоматичного оновлення nuget.exe у папці .nuget при використанні відновлення пакета?


92

Моя команда використовує опцію Увімкнути відновлення пакунків з Nuget 1.5, щоб утримати пакунки поза нашим контролем джерела. Коли Nuget 1.6 був випущений, ми помітили проблему, коли він не тягнув пакети, і відстежили його до Nuget.exe у папці .nuget, яку потрібно оновити до 1.6, щоб вона відповідала диспетчеру пакетів.

Який найкращий спосіб оновити рішення після випадання Nuget? Я не бачу простого способу від студії визначити, яка версія nuget знаходиться в папці рішення. Поки що ми продуваємо папку .nuget і повторно запускаємо команду Enable Package Restore.

Відповіді:


148

Я б запропонував оновити .nuget \ nuget.exe за допомогою цієї команди з командного рядка:

nuget.exe update -self

[EDIT]: Спочатку закрийте VS Solution. Якщо є оновлення та рішення відкрито, nuget.exe буде видалено з рішення.

Ви можете автоматично оновити nuget.exe під час відновлення, змінивши .nuget \ nuget.targets, щоб додати вищезазначену команду. Я б подивився на команду відновлення там як приклад. Але я не впевнений, що воно того варте, оновлення nuget.exe не такі поширені, і зворотна сумісність повинна порушуватися дуже рідко.


Я спробував це в одному зі своїх проектів. Він оновив NuGet.exe, але, здається, видалив його з мого рішення. Я знаю, що можу додати його назад, але це здавалося дивним.
Рік

Так, я спробував справжнє оновлення цього разу, і nuget.exe також видалили з рішення VS для мене. (Я цього раніше не отримував, оскільки nuget.exe був оновлений). Це трапляється тому, що під час оновлення поточний nuget.exe спочатку переміщується до nuget.exe.old, тому посилання на файл порушується. Сумніваюсь, це буде виправлено, я б запустив команду із закритим рішенням.
Олександр Діон,

Здається, що самостійне оновлення не дасть вам нового файлу NuGet.targets, що може бути проблемою. Я думаю, що команда NuGet внесла деякі зміни до цільового файлу між версіями 1.6 та 1.7.
Вільям Гросс,

@William Gross, ви можете перевірити, чи не було оновлення nuget.org/packages/NuGet.Build (це пакет, який містить nuget.targets)
Олександр Діон,

працював у мене, просто не забудьте запустити cmd як адміністратор
Мохаммад

31

Я знайшов найкращий спосіб вирішити це, просто видаливши папку .nuget і повторно включивши відновлення широкого пакету рішення. Як було сказано вище, ви можете додати команду самостійного оновлення до вашої збірки, але це не оновить цілі або файли конфігурації, якщо між версіями будуть зміни (або видалити посилання з вашого рішення). Можливо, це не така вже й велика угода, але це надійний спосіб переконатись, що у вас найновіші файли exe та конфігурації. І в кінці кінців оновлення є проблемою лише в тому випадку, якщо вам потрібен доступ до нової команди або в кінцевому підсумку відбувається нова зміна нового випуску.


3
+1 - Я виявив, що це найкращий спосіб отримувати оновлення NuGet.exe як до NuGet.targetsфайлу (що також важливо). Просто переконайтеся, що ви зберегли будь-які налаштування, які ви зробили у NuGet.targetsфайл (наприклад, власні PackageSources), щоб ви могли повторно застосувати їх до нового файлу.
Джессі Вебб

чудово, що спрацювало на мене, як чарівність !! дякую за інформацію
Гаян

-3

Дивіться допис Девіда Еббо у його блозі

По суті, все, що вам потрібно зробити, це створити файл 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>

1
Питання задає питання про те, як автоматично оновити nuget.exe до останньої версії при використанні відновлення пакета. У публікації блогу Девіда Еббо лише пояснюється, як відновити пакунки за допомогою nuget.exe.
Фріт,

Вам, мабуть, слід вказати, на яку частину запитання ви відповідаєте, тоді, дивлячись на заголовок питання та прийняту відповідь, легко вважати цю відповідь неправильною ...
Йенс,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.