удалить восстановление пакета nuget из решения
Я добавил недавнюю функцию восстановления пакета nuget в решение с помощью "Enable NuGet Package Restore": http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
однако он сломал мой сервер сборки, и у меня не было времени, чтобы исправить это, поэтому я хотел удалить его. Насколько я знаю, для этого нет опции, поэтому я удалил следующую строку вручную из всех моих *.файлы csproj:
<Import Project="$(SolutionDir).nugetnuget.targets" />
проблема теперь в том, что каждый раз, когда мой *.файлы csproj извлекаются или открывают мое решение, строка автоматически добавляется снова, нарушая мою сборку, если я случайно проверяю ее: (
любой идеи, как я могу удалить его навсегда?
UPDATE: несмотря на ответ ниже, он все еще продолжает возвращаться при открытии решения, кто - нибудь с той же проблемой?
15 ответов
я выглядел не очень хорошо, в файлы проекта добавлено еще одно свойство:
<RestorePackages>true</RestorePackages>
просто нужно удалить это, а также все эти строки вручную из всех *.файлы csproj:
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
обновление:
оказывается, это постоянный маленький Баггер, если вы вручную редактируете свои файлы проекта,обязательно закройте решение и удалите все строки из проекта сразу, в противном случае они просто добавляются снова как только проект перезаряжает...
обновление 2:
удалить .папка 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>
чтобы отключить восстановление пакета Nuget:
- удалить .папку из NuGet
- удалить определенные строки из всех .файлы 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 загружать отсутствующие пакеты
Я использую Visual Studio Professional + Resharper 8.2
решения, в настоящее время использующие MSBuild-Integrated package restore, можно перенести в автоматическое восстановление пакетов. Насколько я понимаю, это должно помочь тем, кто сталкивается с проблемами сборки 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
У нас действительно есть сообщение в блоге об этом, и в конце сообщения был упомянут сценарий powershell, чтобы помочь с миграцией.
http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore
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
я следовал принятому решению безрезультатно, используя 2012. Однако это сработало,
- полностью закрыть VS
- обновить
<RestorePackages>true</RestorePackages>
до<RestorePackages>false</RestorePackages>
и удалить<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
строка - и переименовано в
nuget.exe
tonuget.exe.NotExe
для тех, кто все еще нуждается в очистке проекта с помощью восстановления пакета NuGet старого стиля, доступен инструмент IFix здесь автоматизирует процесс.
просто запустите программу установки (IFix
будет добавлен в PATH
), а затем выполните следующее:
IFix nugetrestore --fix
вы можете запустить его в режиме проверки сначала, чтобы увидеть, что он очистит:
IFix nugetrestore --check
У меня была та же проблема. Что я в итоге сделал?: 1) зайти в каждый проект .файл csproj в решении, откройте его в блокноте, затем удалите часть xml и сохраните.
2) Затем я удалил весь пакет.файлы конфигурации во всем решении.
3) Затем мне пришлось удалить .папки nuget и пакетов.
на данный момент у меня было полностью бесплатное решение NuGet.
4) Затем я вручную ссылался на любые необходимые DLL и нажал compile и решение работало как чемпион без необходимости использования пакетов NuGet.
перейдите в каталог решений, где у вас есть и nuget.targets
файл под ним удалить папку,
и измените удалить строки из вашего csproj на этот раз последний раз.
проблема не вернется, чтобы снова вас беспокоить.
Я случайно включил эту опцию "восстановление пакета" при открытии моего проекта в VS2012 RC и начал получать ошибки, которые выглядели примерно так:
" Ошибка 1 не удается найти "C:\FolderX\SomeProject - ... из NuGet\NuGet для.exe'"
чтобы исправить ошибку, я выполнил приведенные выше инструкции, открыл каждый файл проекта в блокноте и удалил эту строку RestorePackage.
Я смог решить эту проблему, выполнив следующие шаги:
1) Убедитесь, что вы берете резервную копию всех текущих изменений извлеченных файлов.
2) физически удалите папку решения из вашего C:\ (путь, который сопоставлен с TFS).
3) получить последнюю версию от TFS для вашего решения.
4) скопируйте (если есть) ваши изменения из резервной копии, которую вы сделали в шаге-1.
надеюсь, что помогает !
Я столкнулся с той же проблемой и попытался удалить все .теги nuget и RestorePackage из файлов проекта, но один проект просто не перезагрузится, независимо от того, насколько тщательно я его изучил .теги nuget и RestorePackages. Думаю, где-то есть скрытые ссылки на это.
в итоге проще было просто скопировать файлы и создать новый проект и импортировать его в решение.
Nuget отстой. Просто удалите nugets и удалите или прокомментируйте элементы пакета из пакетов.config в корневом каталоге проектов, где это является проблемой. Вместо этого используйте прямые ссылки в некоторую папку lib.
<?xml version="1.0" encoding="utf-8"?>
<packages>
<!--<package id="EntityFramework" version="6.0.2" targetFramework="net45" />-->
</packages>