Не удается установить пакет nuget из-за «Не удалось инициализировать хост PowerShell»

173

Внезапно я получаю эту ошибку при обновлении пакетов Nuget. Ни одно из исправлений, с которыми я сталкивался в работе. Я использую Visual Studio 2013.

'Newtonsoft.Json 6.0.3' уже установлен.

Добавление «Newtonsoft.Json 6.0.3» в Турниры. Уведомления.

Успешно добавлено «Newtonsoft.Json 6.0.3» в Турниры. Уведомления.

Выполнение файла сценария 'F: \ My Webs \ BasketballTournaments \ MainBranch \ packages \ Newtonsoft.Json.6.0.3 \ tools \ install.ps1'.

Не удалось инициализировать хост PowerShell. Если для параметра политики выполнения PowerShell установлено значение AllSigned, откройте консоль диспетчера пакетов, чтобы сначала инициализировать хост.

Консоль диспетчера пакетов

Попытка выполнить операцию InitializeDefaultDrives на поставщике FileSystem не удалась.

Если я дождусь завершения инициализации в консоли, я смог добавить несколько пакетов.

Майк Флинн
источник
Привет Майк. У меня точно такая же проблема. Вам удалось решить проблему, и у вас есть работающий менеджер пакетов nuget?
Магнус Бакеус
У меня та же проблема. Я уже установил неограниченную политику выполнения Powershell, но это не помогает. Я устанавливаю пакет в консоли диспетчера пакетов без проблем.
Адами
5
Только что испытал ту же проблему. Это решение помогло мне: stackoverflow.com/questions/10457039/…
Алексей Аза
1
У меня была та же ошибка в Windows 10. Мне нужно было включить Powershell 2.0 из «Программы и компоненты»> «Включить или отключить функции Windows», и после перезапуска Visual Studio все работало нормально.
двуногая лошадь

Ответы:

193

Установка политики выполнения на RemoteSigned или Unrestricted должна работать. Его необходимо изменить в режиме администратора через консоль PowerShell. Имейте в виду, что изменения будут применены в соответствии с битовой версией консоли PowerShell, т.е. 32-битной или 64-битной. Поэтому, если вы хотите установить пакет в Visual Studio (32-разрядная версия), для которого требуется определенная политика, вам следует изменить параметры политики через PowerShell (x86).

Команда в PowerShell (как администратор) для установки неограниченной политики (как отмечено @Gabriel в комментариях):

start-job { Set-ExecutionPolicy Unrestricted } -RunAs32 | wait-job | Receive-Job

Установив неограниченную политику, вы захотите вернуть ей исходную политику после завершения установки.

jellonek
источник
83
Работал на меня. При изменении ExecutionPolicy в PowerShell на 64-разрядных системах он будет изменен только для 64-разрядной версии PowerShell. Но VS - это 32-битный процесс, и «Консоль диспетчера пакетов» также является 32-битным процессом. Чтобы это исправить, вы можете выполнить start-job { Set-ExecutionPolicy Unrestricted } -RunAs32 | wait-job | Receive-Jobв 64-битной консоли PowerShell.
Габриэль
69
После этого вам необходимо перезапустить Visual Studio.
Дэнни Варод
Работает отлично. Жаль, что сам пакет предлагает решение, которое не работает. И не забудьте потом включить оригинальную политику.
Мохоч
9
Закрыл VS 2013, запустил с правами администратора, начал работать нормально ... wiered
Rusty
9
У меня была эта проблема в VS2015, и простое обновление диспетчера пакетов NuGet решило проблему
Shawson
55

Не забудьте перезапустить Visual Studio после того, как вы сделали Set-ExecutionPolicy Unrestricted в PowerShell (x86).

Если это не сработает, попробуйте Set-ExecutionPolicy RemoteSignedв PowerShell (x86), а затем перезапустите Visual Studio.

Сирар Салих
источник
51

По умолчанию выполнение скрипта PowerShell очень ограничено по соображениям безопасности. Для использования в NuGet нам нужно открыть двери.

1. Шаг

Открыть Windows PowerShell, запустить какAdministrator

2. Шаг

NuGet использует 32-битную консоль, поэтому изменения в 64-битной консоли не будут затронуты. Запустите следующий скрипт, чтобы убедиться, что вы настраиваете 32-битную консоль.

start-job { Set-ExecutionPolicy RemoteSigned } -RunAs32 | wait-job | Receive-Job

3. Шаг

Начать сначала Visual Studio

Майкл Сандер
источник
Спасибо! Только когда я дал команду windows powershell, как вы заявили, это сработало. Спасибо!
Эчибан
Это работало для следующих условий: Windows XP, Visual Studio 2010, веб-разработчик Express. Я закрыл визуальную студию. Загруженный файл microsoft.com/en-us/download/confirmation.aspx?id=16818 Powershell. Установлен Powershell. Запустить PowerShell и выполнить стартовое задание {Set-ExecutionPolicy RemoteSigned} -RunAs32 | ожидание работы | Прием-работа. Запустил визуальную студию и использовал nuget. Это сработало.
Разработчик Marius Žilėnas
1
@muflix: в этом случае невозможно, по крайней мере, я бы не знал, как. В конце концов, это проблема безопасности, и поэтому она оставлена ​​на
усмотрение
мы должны закрыть двери после? как?
Omid-RH
его закрытие оставит nuget неработоспособным, поскольку он должен выполнять сценарии во время установки пакетов
Майкл Сандер
25

У меня та же проблема с диалогом управления пакетами NuGet, я использую обходной путь, который может помочь другим - запуск из консоли диспетчера пакетов:

Если я использую пакет командной строки powershell commandlet install-package, все в порядке.

Я не согласен с изменением настроек безопасности «просто чтобы он работал».

Аллан
источник
Вы должны задать новый вопрос.
Tay2510
3
Я не думал, что это оправдывает новый вопрос, поскольку он напрямую связан с поднятой проблемой. Я перефразировал этот пост, чтобы он звучал не так как новый вопрос, а как размышления недовольного разработчика.
Аллан
@Allan Конец этого ответа (после редактирования) должен быть либо комментарием, либо вопросом.
Дэнни Варод
Спасибо за ваш вклад, Дэнни, я надеялся поделиться своим опытом и возможным обходным путем для тех людей, которые не хотели или не могли изменить настройки безопасности. Ответ читается лучше сейчас.
Аллан
Get-Package -Filter PartOfPackageNameискать через установленный пакет, Install-Package PackageName -Version 7.0.1устанавливать конкретную версию пакета. Не забудьте выбрать « Проект по умолчанию» в верхней части консоли диспетчера пакетов
Lu55
24

У меня нет ответов.

Все политики были правильными, но у меня ошибка при установке пакета

Не удалось инициализировать хост PowerShell. Если для параметра политики выполнения PowerShell установлено значение AllSigned, откройте консоль диспетчера пакетов, чтобы сначала инициализировать хост.

Решение : Я удалил с NuGet менеджер пакетов плагин и переустановить его.

Troopers
источник
4
Деинсталляция и переустановка была единственной вещью, которая действительно помогла. Эта проблема также описана здесь: github.com/NuGet/Home/issues/974
Жолт
2
Я переустановил пакет NuGet VSIX, не удаляя его первым, что решило проблему.
Дейв
+1 marketplace.visualstudio.com/… для VS2015
хоанг
16

Запуск Visual Studio в качестве администратора работал для меня.

Судир
источник
1
То же самое, хотя люди должны помнить о том, чтобы закрыть VS после установки пакета и открыть его с обычными разрешениями.
Лиам Лаверти
7

У меня была эта проблема с моей Visual Studio 2015. Я снова удалил и переустановил диспетчер пакетов NuGet. Это сработало для меня.

Henry.K
источник
Как? Он жалуется, что используется другим процессом
Брэндон
7

Я обновил менеджер пакетов Nuget, и это исправило его для меня.

DeclanMcD
источник
6

Это началось с 6.0.4 в последнее время для меня, я не думаю, что это очень хорошее решение, но вот что мне помогло. Закрыть Visual Studio

  1. Откройте приглашение Windows PowerShell от имени администратора (очень важно) и выполните следующую команду: Set-ExecutionPolicy Bypass
  2. Откройте Visual Studio, откройте свое решение и используйте Nuget для установки JSON.Net (или любого другого пакета, который включал его в качестве зависимости).
  3. После того, как все заработает, я рекомендую вернуть политику выполнения powershell обратно ограниченной с помощью следующей команды: Set-ExecutionPolicy Restricted
Гутам Сингх
источник
5

У меня была такая же проблема после обновления до Windows 10.

Это сработало для меня

  1. Закрыть Visual Studio
  2. Запустите Powershell от имени администратора
  3. Бегать Set-ExecutionPolicy Unrestricted
  4. Запустите Visual Studio от имени администратора
  5. Очистите проект и добавьте пакет nuget

Если это все еще не работает, попробуйте изменить devenv.exe.config

Visual Studio 2013: C:\Users\<UserName>\AppData\Local\Microsoft\VisualStudio\12.0

Visual Studio 2015: C:\Users\<UserName>\AppData\Local\Microsoft\VisualStudio\14.0

Добавьте следующее

    <dependentAssembly>
        <assemblyIdentity name="System.Management.Automation" publicKeyToken="31bf3856ad364e35" />
        <publisherPolicy apply="no" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.PowerShell.Commands.Utility" publicKeyToken="31bf3856ad364e35" />
      <publisherPolicy apply="no" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.PowerShell.ConsoleHost" publicKeyToken="31bf3856ad364e35" />
      <publisherPolicy apply="no" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.PowerShell.Commands.Management" publicKeyToken="31bf3856ad364e35" />
      <publisherPolicy apply="no" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.PowerShell.Security" publicKeyToken="31bf3856ad364e35" />
      <publisherPolicy apply="no" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.PowerShell.Commands.Diagnostics" publicKeyToken="31bf3856ad364e35" />
      <publisherPolicy apply="no" />
    </dependentAssembly>
Бехран Бина
источник
Добавление зависимостей Powershell к devenv.exe.configединственному исправлению, которое работало для меня как в VS2013, так и в VS2015. VS2013: C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\12.0VS2015: C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\14.0у меня не сработало изменение политики выполнения, изменение политики выполнения в реестре, переустановка диспетчера пакетов, восстановление Visual Studio, перезапуск Visual Studio, перезапуск Windows.
Рубанов
Wooooow. Все остальные методы не помогли мне решить эту проблему в VS 2015. Помогло только добавление зависимостей в devenv.exe.config. После этого я также нашел stackoverflow.com/questions/12638289/… . Огромное спасибо!!!
nharrer
4

По умолчанию в моей 64-битной Windows 10 была включена только версия Powershell 1.0. Я изменил панель управления / Программы / Программы и компоненты / Включение и отключение функций Windows.

Убедитесь, что механизм Windows Powershell 2.0 включен.

Перезапустите VS2015 в режиме без прав администратора и все пакеты будут установлены правильно.

DKrause
источник
У меня также есть 64-битная Windows 10, и мне нужно было включить движок Windows Powershell 2.0 для работы консоли диспетчера пакетов. Странно, что эта проблема существует уже некоторое время, и Microsoft не включила механизм Powershell 2.0 как часть процесса установки Visual Studio 2017.
Дж. С. Уилсон
4

У меня была такая же проблема с vs2013, и изменение политики выполнения не устранило ее. Единственное рабочее решение, которое я нашел, - это удалить Nuget из VS и установить его снова. Шаги здесь: https://stackoverflow.com/a/32619961/3853238

Дона Бенли
источник
3

Все, что мне нужно было сделать, это перезапустить Visual Studio, открыть NuGet Package Manager Console, а затем использовать Manage NuGet Packagesдиалоговое окно.

Безымянный
источник
3

Закройте все экземпляры Visual Studio и попробуйте снова. У меня это сработало :)

Мохини Метре
источник
3

Если приведенные выше ответы не работают для вас -

  1. Открыть Run - Windows + R
  2. Откройте редактор реестра - введите regedit.exe
  3. Открыть - HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ PowerShell
  4. На правой панели - измените «ExecutionPolicy» и оставьте его «Value Data» пустым.
  5. Перезапустите вашу визуальную студию, теперь ваш Powershell может инициализироваться правильно.
Ричи Рич
источник
2

Попробовав различные предлагаемые исправления, оно было решено путем обновления расширения диспетчера пакетов NuGet в Visual Studio.

Это делается в разделе Инструменты -> Расширения и обновления, затем в диалоговом окне Обновления и обновления -> Галерея Visual Studio. Может потребоваться перезагрузка Visual Studio.

Оскар Шеберг
источник
2

Если вы используете VS 2013 Update 5, вы должны вручную установить обновление 2.8.7 для NuGet Packet Manager.

Отчет об ошибке имеет больше деталей.

Владимир Жуков
источник
2

VS2015: обновил NuGet и работал.

Gubi
источник
Тоже самое. Использовал VS2015 и только что обновил диспетчер пакетов Nuget и все заработало.
iheartcsharp
2

Если ничего из вышеперечисленного не поможет, посмотрите, можете ли вы обновить Visual Studio.

У меня была такая же проблема с сообществом Visual Studio 2017, когда я пытался установить Newtonsoft.Json. ExecutionPolicyИзменение не помогло (я попытался с помощью PowerShell как и редактор реестра). Я также попытался удалить и установить NuGet.

После запуска установочного файла VS2017 он запросил обновление Visual Studio. Все проблемы исчезли после обновления.

Тигран
источник
1

Для меня установка политики выполнения Unrestricted не сработала. Мне пришлось отремонтировать установку vs2013 , зайдя в Панель управления. Ремонт установки работал у меня.

DanKodi
источник
1

Была та же проблема, и это решило ее для меня (Powershell как администратор):

Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\PowerShell -Name ExecutionPolicy -Value ByPass 
Свен Бардос
источник
1

после того, как попробовал все предложенное решение, ничего не работало на VS 2015, обновление 2

удаление папки пакета из папки решения и восстановление ее из Visual Studio работало для меня

Nerdroid
источник
1

У меня была похожая проблема. Я исправил это, включив функцию «Windows PowerShell 2.0» в «Включение или отключение функций Windows». Обратите внимание, что эта функция включена по умолчанию, я отключил ее вручную несколько дней назад.

Я работаю на Windows 10 Pro 64bit, и та же проблема была с Visual Studio 2015 и 2017 (32-битное и 64-битное приложение)

Аднан Мулалич
источник
0

Загрузите и установите административные шаблоны для Windows PowerShell

Next:  Powershell x86 from As Administrator

Run:   Get-ExecutionPolicy -List  , and see if you have RemoteSigned etc..

1. 5 different scopes  Set-ExecutionPolicy "RemoteSigned" -Scope Process -Confirm:$false

2. Machine and User Policy you have to set through the Group Policy Administration Template in 2 areas.

ОБНОВЛЕНИЕ - РЕДАКТИРОВАТЬ:

Set ALL of them to  "Undefined" and ONLY the LocalMachine to "Restricted" 

Это то, что исправлено, возможно, после того, как я дал моей PowerShell больше разрешений, не зная, что это испортит Visual Studio 2013 и 2015

Том Стиккель
источник
0

Эта проблема не всегда связана с политикой выполнения PowerShell. Мой компьютер настроен как «Неограниченный» для PowerShell x64 и x86, но я все еще время от времени получаю это сообщение об ошибке в Visual Studio 2013.

Когда я пытаюсь открыть консоль диспетчера пакетов:

Windows PowerShell успешно обновил вашу политику выполнения, но этот параметр переопределяется политикой, определенной в более конкретной области. Из-за переопределения ваша оболочка сохранит свою текущую эффективную политику выполнения Unrestricted. Введите «Get-ExecutionPolicy -List», чтобы просмотреть параметры политики выполнения. Для получения дополнительной информации см. «Get-Help Set-ExecutionPolicy».

Это недопустимое сообщение об ошибке.

Перезагрузка Visual Studio не всегда решает проблему.

Запуск процесса от имени администратора никогда не решает проблему.

Как и Declan, последнее обновление плагина Package Manager исправило проблему: 2.8.60723.765

Vilmir
источник
0

Установите политику выполнения на Обход вместо Unrestricted или RemoteSigned; этот урок дает более полные инструкции . Кроме того, если у вас возникли проблемы с использованием PowerShell для изменения политики, автор покажет вам, как ее изменить в Regedit.

Чарльз Драйвер младший
источник
неограниченный должен работать так же хорошо - он просто предупреждает вас, когда вы, возможно, делаете что-то небезопасное, когда Bypass просто продолжит выполнение команды.
Auspex
0

Здесь очень много уколов в темноте, поэтому я добавлю свои.

В моем случае я также получил сообщение об отсутствии файла блокировки и рекомендацию запустить его dnu restoreв консоли диспетчера пакетов. Я так и сделал, перезапустил VS, и теперь все работает.

Прорицание
источник
0

Что сработало для меня:

  1. Установите для политики выполнения значение Unrestricted.
  2. Find-Module ISEModuleBrowserAddon | Install-Module
  3. Import-Module ISEModuleBrowserAddon
  4. Find-Module ISEScriptAnalyzerAddOn | Install-Module
  5. Import-Module ISEScriptAnalyzerAddOn
  6. Import-Module ScriptBrowser
  7. В ИСЕ вам нужно Enable-ScriptBrowser

И у вас есть Модуль, Скрипт и Анализатор в вашем ISE.

Запустите в Win 10 Pro, x64 Console Host 5.0.10586.122

Удачи!

Дима
источник