Ответ 1
Попробуйте этот пакет:
Install-Package NuGetEnablePackageRestore
Я настроил восстановление NuGet Package на моем решении, и он отлично работает на моей локальной машине. Я выполнил следующие инструкции:
http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
Проблема у меня на моем сервере сборки, где возникает следующая ошибка:
По умолчанию восстановление пакетов отключено. Чтобы дать согласие, откройте диалоговое окно "Параметры Visual Studio", нажмите "Диспетчер пакетов" node и установите флажок "Разрешить NuGet загружать отсутствующие пакеты во время сборки". Вы также можете дать согласие, установив для переменной среды EnableNuGetPackageRestore значение "true".
К сожалению, у меня нет доступа к серверу сборки, так как он контролируется за пределами сайта, поэтому не удается обновить переменную среды. Есть ли другой способ обойти это? Что-нибудь, что я могу добавить в файл решения или подобное, что позволит восстановить пакет?
Попробуйте этот пакет:
Install-Package NuGetEnablePackageRestore
NuGet может использовать локальные настройки для этого поведения, которое может быть непредсказуемым, если вы не на 100% уверены, как настроен сервер.
Я предпочитаю вносить настройки NuGet в файл <sln root>/.nuget/NuGet.targets
, который контролируется версией и в одном месте. Я получил эту работу с 3 быстрыми изменениями до <sln root>/.nuget/NuGet.targets
, они должны выглядеть как ниже после редактирования:
Изменить 1:
<!-- Enable the restore command to run before builds -->
<RestorePackages Condition=" '$(RestorePackages)' == '' ">true</RestorePackages>
Изменить 2:
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">false</RequireRestoreConsent>
Мой комментарий: неуклюжая логика, но думать о "требует согласия не равным ложному" быть истинным "(оригинал), поскольку" требуется согласие, равное истинному, должно быть true "(переведено), и имеет смысл изменить последнюю часть на" false" (редактирование)
Изменить 3. Я также добавил/раскомментировал тег <PackageSource ... >
, чтобы удалить любые зависимости от
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<PackageSource Include="https://nuget.org/api/v2/" />
</ItemGroup>
Я столкнулся с этой проблемой, когда я попытался построить один из моих проектов с Jenkins, и мне удалось заставить его работать, просто изменив одно значение в файле .nuget\NuGet.targets
с true
на false
.
Я изменил:
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
к
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">false</RequireRestoreConsent>
Обратите внимание, что значение элемента изменилось. Надеюсь, это поможет.
В% appdata%\NuGet\NuGet.Config добавьте следующий раздел внутри
<packageRestore>
<!-- Package Restore and MSBuild-Integrated Package Restore -->
<add key="enabled" value="True" />
<!-- Automatic Package Restore in Visual Studio -->
<add key="automatic" value="True" />
</packageRestore>
Полный пример
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<activePackageSource>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</activePackageSource>
<packageRestore>
<!-- Package Restore and MSBuild-Integrated Package Restore -->
<add key="enabled" value="True" />
<!-- Automatic Package Restore in Visual Studio -->
<add key="automatic" value="True" />
</packageRestore>
</configuration>
Вероятно, я могу попытаться установить для свойства RestorePackages значение true в файле .nuget\NuGet.targets:
<RestorePackages Condition=" '$(RestorePackages)' == '' ">true</RestorePackages>
Для тех, кто наткнулся на этот вопрос, ищет способ вернуть пакеты на сервер сборки, NuGet Package Restore дает хороший обзор текущие параметры.
Я выбираю использовать подход восстановления пакета командной строки. Это так же просто, как выдача следующей командной строки:
C:><path to nuget.exe> restore <path to solution.sln>
nuget.exe a можно получить из https://docs.nuget.org/consume/installing-nuget. Я использовал версию Command-Line Utility Latest 3.X.
Запустите эту команду, чтобы исправить пакет NuGet Enable Package
Install-NuGetEnablePackageRestoreFix
Затем после этого запустите команду "Включить"
Install-Package NuGetEnablePackageRestore
Установить пакет NuGetEnablePackageRestore
-Go в Инструменты → Диспетчер пакетов библиотек → "Восстановление пакета" → снимите флажок "Разрешить NuGet для загрузки отсутствующих пакетов" и "Автоматически проверять..."
Восстановить решение
Чистое решение
Теперь установите флажок "Разрешить NuGet загружать отсутствующие пакеты" и "Автоматически проверять..."
Восстановить решение