Неможливо встановити пакунок нута через "Не вдалося ініціалізувати хост PowerShell"


173

Раптом я отримую цю помилку під час оновлення пакетів Nuget. Жоден з виправлень, які я натрапив на роботу. Я використовую Visual Studio 2013.

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

Додавання "Newtonsoft.Json 6.0.3" до турнірів. Повідомлення.

До турнірів. Повідомлення успішно додано "Newtonsoft.Json 6.0.3".

Виконання файлу сценарію "F: \ Мої веб-сайти \ Баскетбольні турніри \ MainBranch \ пакети \ Newtonsoft.Json.6.0.3 \ tools \ install.ps1".

Не вдалося ініціалізувати хост PowerShell. Якщо для вашого налаштування політики PowerShell встановлено значення AllSigned, відкрийте консоль диспетчера пакунків, щоб спочатку ініціалізувати хост.

Консоль менеджера пакунків

Спроба виконати операцію InitializeDefaultDrives на постачальнику файлових систем не вдалася.

Якщо я зачекаю, коли ініціалізація закінчиться в консолі, я зміг додати деякі пакети.


Привіт Майку. У мене точно таке питання. Чи вдалося вирішити проблему, і у вас працює діючий менеджер пакунків?
Магнус Баккей

У мене така ж проблема. Я вже встановив політику виконання Powershell необмеженою, але це не допомагає. Я встановлюю пакет в Console Package Manager без проблем.
Адамі

5
Щойно пережив те саме питання. Це рішення допомогло мені: stackoverflow.com/questions/10457039/…
Олексій Аза

1
У мене була така ж помилка в Windows 10. Мені довелося ввімкнути Powershell 2.0 з пункту "програми та функції"> "Увімкнення та вимкнення функцій Windows", а потім все працювало нормально після перезавантаження візуальної студії.
двоногий коник

Відповіді:


193

Установка політики виконання на RemoteSigned або Unrestricted має працювати. Його потрібно змінити в режимі адміністратора через консоль PowerShell. Майте на увазі, що зміни будуть застосовані відповідно до бітової версії консолі PowerShell, тобто 32-бітної або 64-бітної. Отже, якщо ви хочете встановити пакет у Visual Studio (32-бітна версія), який вимагає певної політики, слід змінити налаштування політики через PowerShell (x86).

Команда в PowerShell (як адміністратор) встановити політику на необмежену (як зазначає @Gabriel у коментарях):

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

Встановивши політику необмеженою, ви захочете повернути її до оригіналу після завершення встановлення.


83
Працювали для мене. Якщо ви зміните ExecutionPolicy в PowerShell на 64-бітних системах, він змінить його лише для 64-бітної версії PowerShell. Але VS - це 32-бітний процес, а "Console Manager Package" - це також 32-бітний процес. Щоб виправити це, ви можете виконати start-job { Set-ExecutionPolicy Unrestricted } -RunAs32 | wait-job | Receive-Jobв 64-бітній консолі PowerShell.
Габріель

69
Після цього вам потрібно перезапустити Visual Studio.
Danny Varod

Добре працює. Шкода, що сам пакет пропонує рішення, яке не працює. І не забудьте згодом увімкнути оригінальну політику.
Мохоч

9
Закрили VS 2013, працювали адміністратором, почали чудово працювати ... бородав
Іржавий

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 powerhell командою так, як ви заявили, це працювало. Дуже дякую!
Ечібан

Це працювало для наступного середовища: windows xp, visual studio 2010 Веб-розробник express. Я закрив візуальну студію. Завантажено microsoft.com/en-us/download/confirmation.aspx?id=16818 Powershell. Встановлено Powershell. Запустіть паттерн повноважень та виконайте початкове завдання {Set-ExecutionPolicy RemoteSigned} -RunAs32 | чекати-роботу | Прийом-робота. Розпочала візуальну студію та використала нугет. Це спрацювало.
розробник Marius Žilėnas

1
@muflix: У цьому випадку це неможливо, принаймні я б не знав як. Зрештою, це питання безпеки, і таким чином залишається адміністраторам
Майкл Сандер,

нам потрібно закривати двері після? як?
Омід-РЗ

Закриття це залишить непридатним режим, оскільки йому потрібно виконувати сценарії під час встановлення пакетів
Майкл Сандер

25

У мене така ж проблема з діалоговим вікном "Керувати пакетами NuGet", я використовую обхід, який може допомогти іншим - працює з консолі менеджера пакунків:

Якщо я використовую командний рядок powerhell commandlet install-package, все добре.

Я негативно змінюю налаштування безпеки "просто для того, щоб це працювало".


Вам слід задати нове запитання.
Tay2510

3
Я не вважав, що це вимагає нового питання, оскільки воно безпосередньо стосується порушеного питання. Я переформулював цю посаду, щоб вона не виглядала так, як нове запитання, а розмірковування незадоволеного розробника.
Алан

@Allan Кінець цієї відповіді (після редагування) повинен бути або коментарем, або питанням.
Danny Varod

Дякую за ваш внесок, Денні, я сподівався поділитися своїм досвідом та можливим обіймом для тих людей, які не бажали або не могли змінити налаштування безпеки. Відповідь читайте краще зараз.
Аллан

Get-Package -Filter PartOfPackageNameздійснити пошук через встановлений пакет, Install-Package PackageName -Version 7.0.1встановити конкретну версію пакета. Не забудьте вибрати проект за замовчуванням у верхній частині консолі менеджера пакунків
Lu55,

24

Відповіді на мене не працювали.

Усі правила були правильними, але я маю помилку під час встановлення пакету

Не вдалося ініціалізувати хост PowerShell. Якщо для вашого налаштування політики PowerShell встановлено значення AllSigned, відкрийте консоль диспетчера пакунків, щоб спочатку ініціалізувати хост.

Рішення : Я видалив з NuGet менеджер пакетів плагін і перевстановити його.


4
Видалення та перевстановлення було єдиним, що справді допомогло. Це питання також описано тут: github.com/NuGet/Home/isissue/974
Zsolt

2
Я перевстановив пакет NuGet VSIX, не видаляючи його спочатку, що вирішило проблему.
Дейв


16

Запуск Visual Studio як адміністратор працював на мене.


1
Дітто, хоча люди повинні пам’ятати про закриття VS, коли ваш пакет встановлений, і відкриття за звичайними дозволами.
Ліам Лаверті

7

У мене виникла ця проблема з моєю Visual Studio 2015. Я знову видалив і встановив NuGet Package Manager. Це працювало для мене.


Як? Він скаржиться, що його використовують в іншому процесі
Брендон

7

Я оновив менеджер пакунків Nuget і це виправив для мене.


6

Це почалося з 6.0.4 недавно для мене, я не думаю, що це дуже вдале рішення, але ось що мені допомогло. Закрити Visual Studio

  1. Відкрийте підказку Windows PowerShell в якості адміністратора (дуже важливо) і запустіть таку команду: Set-ExecutionPolicy Bypass
  2. Відкрийте Visual Studio, відкрийте своє рішення та використовуйте Nuget для встановлення JSON.Net (або будь-якого пакету, який включив його як залежність).
  3. Після того, як все працює, я рекомендую повернути політику виконання повноважень назад до обмеженої за допомогою наступної команди: 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Що для мене не спрацювало: зміна політики виконання, зміна політики виконання у реєстрі, перевстановлення менеджера пакунків, ремонт візуальної студії, перезапуск візуальної студії, перезапуск вікон.
Рубанов

Wooooow. Усі інші методи не вирішили це для мене у VS 2015. Допомогло лише додавання залежності до devenv.exe.config. Після цього я також знайшов stackoverflow.com/questions/12638289/… . Тобі велике спасибі !!!
nharrer


4

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

Переконайтесь, що двигун Windows Powershell 2.0 включений.

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


У мене також є 64-розрядна версія Windows 10, і мені потрібно було включити движок Windows Powershell 2.0, щоб консоль диспетчера пакунків працювала. Дивно, що ця проблема існує вже деякий час, і Microsoft не ввімкнула двигун Powershell 2.0 в рамках процесу встановлення Visual Studio 2017.
JSWilson

4

У мене була така ж проблема з vs2013, і зміна політики виконання не усунула її. Єдине діюче рішення, яке я знайшов, було видалення Nuget з VS та встановлення його знову. Кроки тут: https://stackoverflow.com/a/32619961/3853238


3

Все, що мені потрібно було, це перезапустити Visual Studio, відкрити NuGet Package Manager Console, а потім за допомогою Manage NuGet Packagesдіалогового вікна працювати.


3

Закрийте всі екземпляри візуальної студії та повторіть спробу. Це працювало для мене :)


3

Якщо вищезгадані відповіді на шкіру працюють для вас -

  1. Відкрити Запуск - windows + R
  2. Відкрити редактор реєстру - тип regedit.exe
  3. Відкрити - HKEY_LOCAL_MACHINE \ SOFTWARE \ Політика \ Microsoft \ Windows \ PowerShell
  4. На правій панелі - Змініть "ExecutionPolicy" і збережіть його "Дані про значення" як порожні.
  5. Перезапустіть свою візуальну студію, тепер ваш Powershell може ініціалізуватися належним чином.

2

Після випробування різних запропонованих виправлень це було врешті вирішено оновленням розширення NuGet Package Manager у Visual Studio.

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



2

VS2015: оновлено NuGet і працювало.


Те ж саме. Використовував VS2015 та лише оновлював Nuget Package Manager, і він працював.
iheartcsharp


2

Якщо жодне з перерахованого вище не допомагає, подивіться, чи можна оновити Visual Studio.

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

Після запуску файлу налаштування VS2017 він попросив оновити Visual Studio. Усі проблеми зникли після оновлення.


1

Для мене встановлення політики виконання на "Без обмежень" не спрацювало. Мені довелося відремонтувати встановлення vs2013 , зайшовши в Панель управління. Ремонт установки працював для мене.


1

Була така ж проблема, і це вирішило її для мене (Powershell як адміністратор):

Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\PowerShell -Name ExecutionPolicy -Value ByPass 

1

після випробування всього запропонованого рішення нічого не працювало на оновлення VS 2015 2

видалення папки пакунків із папки рішення та відновлення її з візуальної студії працювали для мене


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" 

Це те, що могло б виправдатись після того, як я дав більше повноважень, не знаючи, що це зіпсує візуальну студію 2013 та 2015 років


0

Ця проблема не завжди пов'язана з політикою виконання PowerShell. Моя машина налаштована як "Без обмежень" як для PowerShell x64, так і для x86, але я все одно час від часу отримую це повідомлення про помилку у Visual Studio 2013.

Коли я намагаюся відкрити консоль менеджера пакунків:

Windows PowerShell успішно оновив політику виконання, але налаштування перекрито політикою, визначеною у більш конкретному масштабі. Через переосмислення ваша оболонка збереже свою діючу ефективну політику виконання Необмежених. Введіть "Get-ExecutionPolicy -List", щоб переглянути налаштування політики виконання. Для отримання додаткової інформації див. "Get-Help Set-ExecutionPolicy".

Це неправдиве повідомлення про помилку.

Перезавантаження Visual Studio не завжди вирішує проблему.

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

Як і Деклан, останнє оновлення плагіна менеджера пакунків виправило проблему: 2.8.60723.765


0

Встановіть політику виконання на обхід замість необмеженого або віддаленого підпису; цей підручник дає більш повні вказівки . Крім того, якщо у вас виникли проблеми з використанням PowerShell для зміни політики, то автор показує вам, як змінити його в Regedit.


Необмежений повинен працювати так само добре - він лише попереджає вас, коли ви можете зробити щось небезпечне, де Bypass просто піде вперед і запустить команду.
Auspex

0

У темряві тут надзвичайно багато ударів, тому я додам свою.

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


0

Що для мене працювало:

  1. Встановіть політику виконання на необмежену.
  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. В ISE вам потрібно Enable-ScriptBrowser

У вас є модуль, сценарій та аналізатор у вашому ISE.

Запуск у програмі Win 10 Pro, x64 консольного хоста 5.0.10586.122

Щасти!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.