удалить восстановление пакета nuget из решения - PullRequest
148 голосов
/ 03 января 2012

Я добавил функцию недавнего восстановления пакета nuget в решение, используя «Включить восстановление пакета NuGet»: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

Однако это сломало мой сервер сборки, и у меня не было времени на его исправление, поэтомуЯ хотел удалить это.Насколько я знаю, для этого нет никакой возможности, поэтому я удалил следующую строку вручную из всех моих файлов * .csproj:

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

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

Любые идеи, как я могу удалить это навсегда?

ОБНОВЛЕНИЕ: несмотря на ответ нижеон все еще возвращается при открытии решения, кто-нибудь с той же проблемой?

Ответы [ 15 ]

212 голосов
/ 03 января 2012

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

<RestorePackages>true</RestorePackages>

Просто удалите это, а также все эти строки вручную из всех * .csproj файлов:

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

UPDATE:

Оказывается, это постоянная небольшая ошибка, если вы вручную редактируете файлы проекта, обязательно закройте решение и удалите все строки из проекта сразу , в противном случае они просто добавляются снова после перезагрузки проекта ...

UPDATE2:

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

Update3:

Более поздняя версия 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>

Update4

Внутри NuGet.Targets, расположенной в папке .nuget, есть еще один раздел, который добавляется в новые проекты ... переключите его на false.

<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'false'">
    RestorePackages;
    $(BuildDependsOn);
</BuildDependsOn>
48 голосов
/ 02 октября 2012

Чтобы отключить восстановление пакета Nuget:

  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

8 голосов
/ 21 октября 2014

Разве это не здесь?

Параметры ... -> Диспетчер пакетов Nuget -> [снять флажок] Разрешить загрузку Nugetнедостающие пакеты

enter image description here

Я использую Visual Studio Professional + Resharper 8.2

5 голосов
/ 27 января 2014

Решения, в настоящее время использующие MSBuild-Integrated для восстановления пакетов, можно перенести в режим автоматического восстановления пакетов. Насколько я понимаю, это должно помочь тем, кто сталкивается с проблемами сборки CI. (Пожалуйста, поправьте меня, если я ошибаюсь).

См. Документ на веб-сайте nuget. Миграция интегрированных с 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 голосов
/ 16 ноября 2014

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

В сообщении блога упоминается сценарий powershell , который позаботится о удалении необходимых строк автоматически (и рекурсивно): https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/migrateToAutomaticPackageRestore.ps1

Предложение «Отключить восстановление пакета NuGet» помечается как «Не исправить»: https://nuget.codeplex.com/workitem/1883

3 голосов
/ 11 ноября 2014

У нас фактически есть пост в блоге, и в конце поста был упомянут скрипт powershell, чтобы помочь с миграцией.

http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

2 голосов
/ 19 мая 2015

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

Просто запустите программу установки (IFix будетдобавить к PATH) и затем выполнить следующее:

IFix nugetrestore --fix

Вы можете запустить его в режиме проверки, чтобы посмотреть, что он очистит:

IFix nugetrestore --check
2 голосов
/ 06 ноября 2013

Я следовал принятому решению безрезультатно, используя 2012. Это сработало, хотя,

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

Удалите файл packages.config в своем решении.

1 голос
/ 13 августа 2014

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

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

...