видалити відновлення пакетів нута з рішення


148

Я додав недавню функцію відновлення пакунків з нуджетами до рішення, використовуючи "Увімкнути відновлення пакета NuGet": http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

Однак це зламало мій сервер збирання, і я не встиг його виправити, тому хотів його видалити. Наскільки я не знаю, для цього немає жодного варіанту, тому я видалив наступний рядок вручну зі всіх своїх * .csproj-файлів:

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

Проблема зараз полягає в тому, що кожного разу, коли мої файли * .csproj перевіряються або відкриваються моє рішення, рядок автоматично додається знову, порушуючи мою збірку, якщо я випадково перевіряю це :(

Будь-які ідеї, як я можу її назавжди видалити?

ОНОВЛЕННЯ: незважаючи на відповідь нижче, вона все ще повертається під час відкриття рішення, хтось із тією ж проблемою?


2
Ви не можете просто відкатати набір змін у контролі джерела?
Бетті

добре, це був досить великий набір змін, але завдяки вашому коментарю я подивився, і, схоже, він також додав папку .nuget у шлях рішення, видалив це, щоб також перевірити, чи вирішує проблему
Wiebe Tijsma

Чи вдалося виправити сервер збірки? (а чи це teamcity?), тому що імпортний проект, який ви цитуєте вище, - це те, що спричиняє збій мого teamcity
Baldy

@Baldy Ні, ми використовуємо TFS Build, і я не дуже шукав рішення, просто його видалив (все ще планую пірнати в нього пізніше)
Wiebe Tijsma

3
Я створив проблему для команди NuGet, щоб виправити цю проблему. Будь-ласка, голосуйте на nuget.codeplex.com/workitem/3756
deadlydog

Відповіді:


214

Я не дуже добре виглядав, до файлів проекту додано ще одне властивість:

<RestorePackages>true</RestorePackages>

Просто потрібно видалити це, а також всі ці рядки вручну з усіх * .csproj файлів:

  <Import Project="$(SolutionDir)\.nuget\nuget.targets" />

ОНОВЛЕННЯ:

Виявляється, це постійний маленький помилок, якщо ви вручну редагуєте файли проектів, не забудьте закрити рішення та видалити всі рядки з проекту одразу , інакше вони просто додаються знову, як тільки проект перезавантажується ...

ОНОВЛЕННЯ2:

Видаліть папку .nuget і з кореня рішення

ОНОВЛЕННЯ3:

Пізніша версія NuGet додає ще один розділ, який потрібно видалити:

 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>

Оновлення4

Всередині NuGet.Targetsрозташованої в .nugetпапці є ще один розділ, який додається до нових проектів ... переключіть його на помилковий.

<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'false'">
    RestorePackages;
    $(BuildDependsOn);
</BuildDependsOn>

7
Я виявив, що також є <Import Project="$(SolutionDir)\.nuget\nuget.targets" />кінець файлу .csproj, який потрібно видалити вручну.
TimDog

6
ХА! відступає повільно :)
TimDog

5
Ця річ мучила і мене. Якщо ваші проекти є у багатьох різних рішеннях, функція відновлення пакета спричиняє безліч проблем.
Даміян

7
"Переконайтесь, що ви закриєте рішення" тут насправді має ключове значення, оскільки VS2010, схоже, кешує файли csproj / msbuild (без вибору певних модифікацій). Я не помічав такої поведінки в VS2012, але це мене сильно набридало при зміні цих файлів у VisualStudio.
Xavier Decoster

4
Я створив проблему для команди NuGet, щоб виправити цю проблему. Будь-ласка, голосуйте на nuget.codeplex.com/workitem/3756
deadlydog

48

Щоб вимкнути відновлення Nuget Package:

  1. Видалити папку .nuget
  2. Видаліть конкретні рядки з усіх файлів .csproj

Рядки для видалення:

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
<RestorePackages>true</RestorePackages>

Примітка. Переконайтеся, що ви робите всі зміни за один раз перед перезавантаженням рішення, інакше це додасть їх назад.

Це ґрунтується на такій статті: http://bartwullems.blogspot.no/2012/08/disable-nuget-package-restore.html

Крім того, ви можете повторно перевірити, чи цей параметр вимкнено: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages


Я створив проблему для команди NuGet, щоб виправити цю проблему. Будь-ласка, голосуйте на nuget.codeplex.com/workitem/3756
deadlydog

1
Дякую, для мене це рішення було просто відмінне
Maarten Kieft

Я користувався інструментом IFix з великим успіхом при очищенні репостів для багатьох проектів. Це в основному автоматизує ці кроки. visualstudiogallery.msdn.microsoft.com / ...
angularsen

Папка .nuget прихована, і вам потрібно видалити її з каталогу не тільки проекту.
Ерік Бергштедт

8

Чи не тут це налаштування?

Опції ... -> Nuget Package Manager -> [зніміть прапорець] Дозволити Nuget завантажувати відсутні пакети

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

Я використовую Visual Studio Professional + Resharper 8.2


Я видалив папку пакунків і очистив кеш пакунків, щоб виправити свою проблему. Дякую!
Тресто

1
Ні, він не оновлює файли .proj після - тому проблема повертається - але добре це зробити і тут :-)
schmoopy

Вікно виводу показує це під час побудови: Restoring NuGet packages... To prevent NuGet from restoring packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages during build.'це лише підтвердження того, що це має бути шляхом.
Мусульманський Бен Дау

1
Це не пов’язано з відновленням Nuget Package. У старих версіях VS був пункт контекстного меню для проектів під назвою "Увімкнути відновлення Nuget Package", який створив би .nuget/папку та змінив ваш .csprojпосилання на .targetsфайл. Ви повинні були nuget.exeскористатись своїм VCS (ев, не вирішуючи проблеми, що вирішуються!) Та подібною потворністю. На сьогодні msbuild /restoreіснує і відновлення вбудованого пакета VS. ОП запитує, як усунути старий, поганий спосіб виконання дій, а не як відключити правильну підтримку відновлення вбудованого пакета VS.
бінкі

5

Наразі рішення, що використовують відновлення пакунків з інтеграцією MSBuild, можна перенести на автоматичне відновлення пакунків. З того, що я розумію, це повинно допомогти тим, хто стикається з ІС, будувати проблеми. (Будь ласка, виправте мене, якщо я помиляюся).

Зверніться до документа на веб-сайті: Міграція MSBuild-інтегрованих рішень для автоматичного відновлення пакунків за адресою http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

Там є інформація для перетворення з і без TFS.

Девід Еббо також розмістив деяку інформацію на http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html



3

У NuGet є повідомлення в блозі про перехід до автоматичного відновлення пакунків: http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

У публікації блогу є посилання на скриньку повноважень, на яку потрібно подбати про автоматичне видалення необхідних рядків (і рекурсивно): https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/migrateToAutomaticPackageRestore.ps1

Пропозиція вимкнути функцію відновлення пакета NuGet безпосередньо позначена як Не виправлено: https://nuget.codeplex.com/workitem/1883


2

Я дотримувався прийнятого рішення безрезультатно, використовуючи 2012 рік. Це все-таки спрацювало,

  1. Повністю закрити VS
  2. Оновлення <RestorePackages>true</RestorePackages>до <RestorePackages>false</RestorePackages>і видалити <Import Project="$(SolutionDir)\.nuget\nuget.targets" />рядок
  3. Також перейменовано nuget.exeнаnuget.exe.NotExe

2

Для тих, хто ще потребує очищення проекту за допомогою відновлення старого пакету NuGet, інструмент IFix, доступний тут, автоматизує процес.

Просто запустіть інсталятор ( IFixбуде додано PATH) та запустіть наступне:

IFix nugetrestore --fix

Ви можете запустити його в режимі перевірки спочатку, щоб побачити, що воно буде очищати:

IFix nugetrestore --check

1

У мене було те саме питання. Що я в кінцевому підсумку робив: 1) перейдіть до кожного проекту .csproj-файлу у рішенні, відкрийте його в блокноті, потім вилучіть частину xml та збережіть.

2) Потім я видалив усі файли package.config з усього рішення.

3) Тоді мені довелося видалити папки .nuget і пакет.

На цей момент у мене було повністю безкоштовне рішення NuGet.

4) Потім я вручну звернувся до будь-яких потрібних DLL-файлів і натиснув компіляцію, і рішення пробігло як шампіньон без необхідності пакетів NuGet.


1

Перейдіть до каталогу рішень, де у вас є [$(SolutionDir)\.nuget\nuget.targets] .nugetпапка та nuget.targetsфайл, під ним видаліть папку та змініть видалення рядків зі свого csproj в останній раз.

Проблема не повернеться, щоб повторити помилку.



0

Я випадково ввімкнув цю опцію "відновлення пакета" під час відкриття свого проекту в VS2012 RC і почав отримувати помилки, які виглядали приблизно так:

"Помилка 1 неможливо знайти" C: \ FolderX \ SomeProject.nuget \ nuget.exe ""

Щоб виправити помилку, я дотримувався вищевказаних інструкцій, відкривав відкритий кожен файл проекту в блокноті та видаляв цей рядок RestorePackage.


0

Мені вдалося вирішити цю проблему, зробивши наступні кроки:

1) переконайтесь, що ви взяли резервну копію всіх ваших поточних змін у файлах, які ви перевірили.

2) фізично видалити папку рішення зі свого C: \ (шлях, який відображається до TFS).

3) отримати останню інформацію від TFS для свого рішення.

4) скопіюйте (якщо такі є) свої зміни з резервної копії, яку ви зробили на кроці-1.

сподіваюся, що допомагає!


-2

Я зіткнувся з точно такою самою проблемою і спробував видалити всі теги .nuget і RestorePackage з файлів проекту, але один проект не перезавантажився б неважливо, наскільки ретельно я його вивчив на предмет .nuget та RestorePackages. Я думаю, що десь є приховані посилання на це.

Зрештою, було простіше просто скопіювати файли та створити новий проект та імпортувати його до рішення.


-8

Nuget смокче. Просто видаліть нуги та видаліть або коментуйте елементи пакета з пакети.config в кореневому каталозі проектів, де це проблема. Використовуйте прямі посилання в якусь папку lib.

<?xml version="1.0" encoding="utf-8"?>
  <packages>
    <!--<package id="EntityFramework" version="6.0.2" targetFramework="net45" />-->
  </packages>

Він "смокче", як і будь-який інший продукт, якщо ви не знаєте, як ним користуватися, і не намагаєтесь його зрозуміти.
Wiebe Tijsma

Це справедливо, але, на мій погляд, підштовхнення не дає вам достатнього контролю над вашим проектом. Також Nuget GUI потребує серйозних оновлень. 1. Це не інтуїтивно зрозуміло, 2. Важко керувати пакетом 3. Важко відключити відновлення 4. Завантажити непотрібні пакети 5. Іноді не вдається відновити пакунки
Ігор N

Я певною мірою погоджуюся, хоча думаю, що це справді перемагає відсутність менеджера пакунків. Схоже, вони працюють над серйозними оновленнями графічного інтерфейсу для nuget 3.0: blog.nuget.org/20141112/nuget-3.0-preview.html
Wiebe Tijsma
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.