Подтвердить что ты не робот

Восстановление пакета NuGet не работает на сервере сборки

Я настроил восстановление NuGet Package на моем решении, и он отлично работает на моей локальной машине. Я выполнил следующие инструкции:

http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

Проблема у меня на моем сервере сборки, где возникает следующая ошибка:

По умолчанию восстановление пакетов отключено. Чтобы дать согласие, откройте диалоговое окно "Параметры Visual Studio", нажмите "Диспетчер пакетов" node и установите флажок "Разрешить NuGet загружать отсутствующие пакеты во время сборки". Вы также можете дать согласие, установив для переменной среды EnableNuGetPackageRestore значение "true".

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

4b9b3361

Ответ 1

Попробуйте этот пакет:

Install-Package NuGetEnablePackageRestore 

Ответ 2

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>

Ответ 3

Я столкнулся с этой проблемой, когда я попытался построить один из моих проектов с 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>

Обратите внимание, что значение элемента изменилось. Надеюсь, это поможет.

Ответ 4

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

Ответ 5

Вероятно, я могу попытаться установить для свойства RestorePackages значение true в файле .nuget\NuGet.targets:

<RestorePackages Condition="  '$(RestorePackages)' == '' ">true</RestorePackages>

Ответ 6

Для тех, кто наткнулся на этот вопрос, ищет способ вернуть пакеты на сервер сборки, 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.

Ответ 7

Запустите эту команду, чтобы исправить пакет NuGet Enable Package

Install-NuGetEnablePackageRestoreFix

Затем после этого запустите команду "Включить"

Install-Package NuGetEnablePackageRestore

Ответ 8

Установить пакет NuGetEnablePackageRestore

Ответ 9

-Go в Инструменты → Диспетчер пакетов библиотек → "Восстановление пакета" → снимите флажок "Разрешить NuGet для загрузки отсутствующих пакетов" и "Автоматически проверять..."

  • Восстановить решение

  • Чистое решение

  • Теперь установите флажок "Разрешить NuGet загружать отсутствующие пакеты" и "Автоматически проверять..."

  • Восстановить решение