it-swarm.com.ru

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

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

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

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

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

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

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

146
Wiebe Tijsma

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

<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>

Update4

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

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

Чтобы отключить восстановление пакета 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

48
angularsen

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

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

enter image description here

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

8
orad

Решения, использующие 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

5
James Bradt

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

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

3
Dan Liu

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
Nitin Agarwal

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

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

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

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

IFix nugetrestore --fix

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

IFix nugetrestore --check
2
Simon Fox

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

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

1
arvind

Я была такая же проблема. Что я в итоге сделал: 1) Зайдите в каждый проект .csproj файл в решении, откройте его в блокноте, затем удалите часть XML и сохраните. 

2) Затем я удалил все файлы package.config во всем решении. 

3) Затем мне пришлось удалить папки .nuget и package. 

На данный момент у меня было полностью бесплатное решение NuGet. 

4) Затем я вручную сослался на все необходимые библиотеки DLL и нажал кнопку «Компилировать», и решение работало как победитель без необходимости использования пакетов NuGet.

1
Andy30acre

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

0
Latency

Я случайно включил эту опцию «восстановление пакета» при открытии своего проекта в VS2012 RC и начал получать ошибки, которые выглядели примерно так:

"Ошибка 1 Не удалось найти 'C:\FolderX\SomeProject.nuget\nuget.exe'"

Чтобы исправить ошибку, я следовал приведенным выше инструкциям, открыл, открыл каждый файл проекта в блокноте и удалил эту строку RestorePackage.

0
Dmitry Lyalin

1) make sure you take a backup of all your current checked-out files changes.

2) physically delete the solution folder from your C:\ (path that is mapped to TFS).

3) get latest from TFS for your solution.

4) copy (if any) your changes from the backup you took in step-1.

hope that helps !

0
Rajesh