Nie można zainstalować pakietu NuGet z powodu „Nie udało się zainicjować hosta programu PowerShell”

173

Nagle otrzymuję ten błąd podczas uaktualniania pakietów Nuget. Żadna z poprawek, z którymi się spotkałem, nie działa. Używam Visual Studio 2013.

„Newtonsoft.Json 6.0.3” jest już zainstalowany.

Dodanie „Newtonsoft.Json 6.0.3” do Tournaments.Notifications.

Pomyślnie dodano „Newtonsoft.Json 6.0.3” do Tournaments.Notifications.

Wykonywanie pliku skryptu „F: \ My Webs \ BasketballTournaments \ MainBranch \ packages \ Newtonsoft.Json.6.0.3 \ tools \ install.ps1”.

Nie udało się zainicjować hosta PowerShell. Jeśli ustawienie zasad wykonywania programu PowerShell jest ustawione na AllSigned, otwórz konsolę Menedżera pakietów, aby najpierw zainicjować hosta.

Konsola menedżera pakietów

Próba wykonania operacji InitializeDefaultDrives na dostawcy „FileSystem” nie powiodła się.

Jeśli czekam na zakończenie inicjalizacji w konsoli, udało mi się dodać kilka pakietów.

Mike Flynn
źródło
Cześć Mike. Mam dokładnie ten sam problem. Czy udało Ci się rozwiązać problem i masz działającego menedżera pakietów NuGet?
Magnus Backeus
Mam ten sam problem. Ustawiłem już politykę wykonywania programu PowerShell jako nieograniczoną, ale to nie pomaga. Instaluję pakiet w konsoli menedżera pakietów bez problemu.
Adamy
5
Właśnie napotkałem ten sam problem. To rozwiązanie pomogło mi: stackoverflow.com/questions/10457039/…
Oleksii Aza
1
Miałem ten sam błąd w systemie Windows 10. Musiałem włączyć Powershell 2.0 z „Programy i funkcje”> „Włącz lub wyłącz funkcje systemu Windows”, a po ponownym uruchomieniu programu Visual Studio wszystko działało dobrze.
dwunożny koń

Odpowiedzi:

193

Ustawienie zasad wykonywania na RemoteSigned lub Unrestricted powinno działać. Należy go zmienić w trybie administratora za pośrednictwem konsoli PowerShell. Należy pamiętać, że zmiany zostaną zastosowane zgodnie z wersją bitową konsoli PowerShell, czyli 32-bitową lub 64-bitową. Więc jeśli chcesz zainstalować pakiet w Visual Studio (wersja 32-bitowa), który wymaga określonej polityki, powinieneś zmienić ustawienia zasad za pomocą PowerShell (x86).

Polecenie w PowerShell (jako administrator), aby ustawić zasady na nieograniczone (jak zauważył @Gabriel w komentarzach) to:

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

Po ustawieniu zasady na nieograniczoną, po zakończeniu instalacji będziesz chciał przywrócić pierwotną zasadę.

jellonek
źródło
83
Pracował dla mnie. Zmiana ExecutionPolicy w PowerShell w systemach 64-bitowych spowoduje zmianę tylko dla 64-bitowej wersji programu PowerShell. Jednak VS jest procesem 32-bitowym, a „Konsola menedżera pakietów” jest również procesem 32-bitowym. Aby to naprawić, możesz wykonać start-job { Set-ExecutionPolicy Unrestricted } -RunAs32 | wait-job | Receive-Jobw 64-bitowej konsoli PowerShell.
Gabriel
69
Następnie musisz ponownie uruchomić program Visual Studio.
Danny Varod,
Działa w porządku. Szkoda, że ​​sam pakiet sugeruje rozwiązanie, które nie działa. I nie zapomnij później włączyć oryginalnej polityki.
Mohoch
9
Zamknął VS 2013, prowadzony jako admin, zaczął działać dobrze ... dzierżył
Rusty
9
Miałem ten problem w VS2015 i po prostu zaktualizowanie menedżera pakietów NuGet rozwiązało problem
Shawson
55

Pamiętaj, aby ponownie uruchomić program Visual Studio po wykonaniu Set-ExecutionPolicy Unrestricted w programie PowerShell (x86).

Jeśli to nie zadziała, spróbuj Set-ExecutionPolicy RemoteSignedw programie PowerShell (x86), a następnie uruchom ponownie program Visual Studio.

Sirar Salih
źródło
51

Domyślnie wykonanie skryptu PowerShell jest bardzo ograniczone ze względów bezpieczeństwa. Do użycia w NuGet musimy otworzyć drzwi.

1. Krok

Otwórz Windows PowerShell, uruchom jakoAdministrator

2. Krok

NuGet używa konsoli 32-bitowej, więc nie będą miały na niego wpływu zmiany w konsoli 64-bitowej. Uruchom następujący skrypt, aby upewnić się, że konfigurujesz konsolę 32-bitową.

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

3. Krok

Uruchom ponownie Visual Studio

Michael Sander
źródło
Dziękuję Ci! Dopiero gdy wykonałem polecenie Windows PowerShell w sposób, w jaki powiedziałeś, zadziałało. Dzięki wielkie!
Echiban
To działało dla następującego środowiska: Windows XP, Visual Studio 2010 Web Developer Express. Zamknąłem studio wizualne. Pobrano microsoft.com/en-us/download/confirmation.aspx?id=16818 Powershell. Zainstalowany Powershell. Uruchom PowerShell i uruchom zadanie startowe {Set-ExecutionPolicy RemoteSigned} -RunAs32 | kelnerka | Odbieranie pracy. Uruchomiłem Visual Studio i użyłem nuget. Zadziałało.
Deweloper Marius Žilėnas
1
@muflix: w takim przypadku niemożliwe, przynajmniej nie wiedziałbym jak. Ostatecznie jest to kwestia bezpieczeństwa i pozostawiona administratorom
Michaelowi Sanderowi
czy później musimy zamknąć drzwi? w jaki sposób?
Omid-RH
zamknięcie go spowodowałoby, że nuget nie działałby, ponieważ musi uruchamiać skrypty podczas instalacji pakietów
Michael Sander
25

Mam ten sam problem z oknem dialogowym Zarządzaj pakietami NuGet, używam obejścia, które może pomóc innym - uruchamianie z konsoli menedżera pakietów:

Jeśli korzystam z pakietu instalacyjnego PowerShell w wierszu poleceń, wszystko jest w porządku.

Jestem przeciwny zmianie ustawień zabezpieczeń „tylko po to, by to działało”.

Allan
źródło
Powinieneś zadać nowe pytanie.
Tay2510
3
Nie sądziłem, że uzasadnia to nowe pytanie, ponieważ bezpośrednio odnosi się do podniesionej kwestii. Przeformułowałem post tak, aby brzmiał nie tak jak nowe pytanie, ale przemyślenia niezadowolonego programisty.
Allan
@Allan Końcem tej odpowiedzi (po edycji) powinien być komentarz lub pytanie.
Danny Varod,
Dziękuję za twój wkład Danny, miałem nadzieję, że podzielę się swoim doświadczeniem i możliwym obejściem dla tych ludzi, którzy nie chcieli lub nie mogli zmienić ustawień zabezpieczeń. Odpowiedź brzmi teraz lepiej.
Allan,
Get-Package -Filter PartOfPackageNameaby przeszukać zainstalowany pakiet, Install-Package PackageName -Version 7.0.1aby zainstalować określoną wersję pakietu. Nie zapomnij wybrać domyślnego projektu w górnej części konsoli menedżera pakietów
Lu55
24

Żadne odpowiedzi nie zadziałały dla mnie.

Wszystkie zasady były poprawne, ale podczas instalowania pakietu pojawia się błąd

Nie udało się zainicjować hosta PowerShell. Jeśli ustawienie zasad wykonywania programu PowerShell jest ustawione na AllSigned, otwórz konsolę Menedżera pakietów, aby najpierw zainicjować hosta.

Rozwiązanie : mam odinstalowane z Nuget menedżera pakietów wtyczkę i ponownie zainstalować go.

Żołnierze
źródło
4
Odinstalowanie i ponowna instalacja była jedyną rzeczą, która rzeczywiście pomogła. Ten problem jest również opisany tutaj: github.com/NuGet/Home/issues/974
Zsolt
2
Ponownie zainstalowałem pakiet NuGet VSIX bez wcześniejszego odinstalowywania go, co rozwiązało problem.
Dave,
16

Uruchamianie Visual Studio jako Administrator pracował dla mnie.

Sudhir
źródło
1
Podobnie, chociaż ludzie powinni pamiętać o zamknięciu VS po zainstalowaniu pakietu i ponownym otwarciu z normalnymi uprawnieniami.
Liam Laverty,
7

Miałem ten problem z moim programem Visual Studio 2015. Odinstalowałem i ponownie zainstalowałem Menedżera pakietów NuGet. U mnie to zadziałało.

Henry.K
źródło
W jaki sposób? Narzeka, że ​​jest używany przez inny proces
Brandon
7

Zaktualizowałem menedżera pakietów Nuget i to naprawiło to za mnie.

DeclanMcD
źródło
6

Zaczęło się to dziać ostatnio w wersji 6.0.4 dla mnie, nie sądzę, żeby to było bardzo dobre rozwiązanie, ale oto co mi pomogło. Zamknij program Visual Studio

  1. Otwórz monit Windows PowerShell jako Administrator (bardzo ważne) i uruchom następujące polecenie: Set-ExecutionPolicy Bypass
  2. Otwórz program Visual Studio, otwórz swoje rozwiązanie i użyj Nuget do zainstalowania JSON.Net (lub dowolnego pakietu zawierającego go jako zależność).
  3. Gdy wszystko działa, zalecam ustawienie zasad wykonywania programu PowerShell z powrotem na ograniczone za pomocą następującego polecenia: Set-ExecutionPolicy Restricted
Goutam Singh
źródło
5

Miałem ten sam problem po aktualizacji do Windows 10.

To zadziałało dla mnie

  1. Zamknij program Visual Studio
  2. Uruchom Powershell jako administrator
  3. Biegać Set-ExecutionPolicy Unrestricted
  4. Uruchom program Visual Studio jako administrator
  5. Wyczyść projekt i dodaj pakiet NuGet

Jeśli nadal nie działa, spróbuj edytować 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

Dodaj następujące elementy

    <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>
BehranG BinA
źródło
Dodanie zależności Powershell do devenv.exe.configpliku jest jedyną poprawką, która działała dla mnie zarówno w VS2013, jak i VS2015. VS2013: C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\12.0VS2015: C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\14.0To, co mi się nie udało, to zmiana zasad wykonywania, zmiana zasad wykonywania w rejestrze, ponowna instalacja menedżera pakietów, naprawa Visual Studio, ponowne uruchomienie Visual Studio, ponowne uruchomienie systemu Windows.
Rubanov
Wooooow. Wszystkie inne metody nie rozwiązały tego problemu w VS 2015. Pomogło tylko dodanie zależności do devenv.exe.config. Po tym znalazłem również stackoverflow.com/questions/12638289/… . Dziękuje Ci bardzo bardzo mocno!!!
nharrer
4

Domyślnie mój 64-bitowy system Windows 10 miał włączoną tylko wersję Powershell 1.0. Zmieniłem panel sterowania / Programy / Programy i funkcje / Wyłącz funkcje systemu Windows.

Upewnij się, że aparat Windows Powershell 2.0 jest włączony.

Uruchom ponownie VS2015 w trybie innym niż administrator i z poprawnie zainstalowanymi wszystkimi pakietami.

DKrause
źródło
Mam również 64-bitowy system Windows 10 i potrzebowałem włączyć silnik Windows Powershell 2.0, aby konsola Menedżera pakietów działała. To dziwne, że ten problem istnieje już od jakiegoś czasu, a Microsoft nie włączył silnika Powershell 2.0 w ramach procesu instalacji programu Visual Studio 2017.
JSWilson
4

Miałem ten sam problem z vs2013 i zmiana polityki wykonywania go nie rozwiązała. Jedynym działającym rozwiązaniem, które znalazłem, było odinstalowanie Nugeta z VS i zainstalowanie go ponownie. Kroki są tutaj: https://stackoverflow.com/a/32619961/3853238

Doğa Benli
źródło
3

Wszystko, co musiałem zrobić, to zrestartować Visual Studio, otworzyć NuGet Package Manager Console, a następnie użycie Manage NuGet Packagesokna dialogowego zadziałało.

Bezimienny
źródło
3

Zamknij wszystkie instancje programu Visual Studio i spróbuj ponownie. U mnie zadziałało :)

Mohini Mhetre
źródło
3

Jeśli powyższe odpowiedzi nie działają dla Ciebie -

  1. Otwórz Uruchom - Windows + R.
  2. Otwórz edytor rejestru - wpisz regedit.exe
  3. Otwórz - HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ PowerShell
  4. W prawym okienku - Zmodyfikuj „ExecutionPolicy” i pozostaw puste pole „Dane wartości”.
  5. Zrestartuj swoje studio wizualne, teraz Twoja Powershell może zostać poprawnie zainicjowana.
Richie Rich
źródło
2

Po wypróbowaniu różnych sugerowanych poprawek ostatecznie rozwiązano to, aktualizując rozszerzenie Menedżera pakietów NuGet w programie Visual Studio.

Odbywa się to w obszarze Narzędzia -> Rozszerzenia i aktualizacje, a następnie w oknie dialogowym Rozszerzenia i aktualizacje Zaktualizowano -> Galeria programu Visual Studio. Może być wymagane ponowne uruchomienie programu Visual Studio.

Oskar Sjöberg
źródło
2

Jeśli używasz VS 2013 Update 5, należy ręcznie zainstalować aktualizację 2.8.7 dla Menedżera pakietów NuGet.

Raport o błędzie zawiera więcej szczegółów.

Vladimir Zhukov
źródło
2

VS2015: Zaktualizowano NuGet i działał.

Gubi
źródło
To samo tutaj. Używałem VS2015 i właśnie zaktualizowałem Menedżera pakietów Nuget i zadziałało.
iheartcsharp
2

Jeśli żadne z powyższych nie pomaga, sprawdź, czy możesz zaktualizować program Visual Studio.

Miałem ten sam problem ze społecznością programu Visual Studio 2017, gdy próbowałem zainstalować Newtonsoft.Json. PlikExecutionPolicyZmiana nie pomogło (próbowałem przy użyciu zarówno PowerShell i edytor rejestru). Próbowałem również odinstalować i zainstalować NuGet.

Po uruchomieniu pliku instalacyjnego VS2017 poprosił o aktualizację programu Visual Studio. Po aktualizacji wszystkie problemy zniknęły.

Tigran
źródło
1

U mnie ustawienie zasady wykonywania na Unrestricted nie zadziałało. Musiałem naprawić instalację vs2013 , przechodząc do Panelu sterowania. Naprawa instalacji u mnie zadziałała.

DanKodi
źródło
1

Miałem ten sam problem i to rozwiązało go dla mnie (Powershell jako admin):

Set-ItemProperty -Path HKLM:\Software\Policies\Microsoft\Windows\PowerShell -Name ExecutionPolicy -Value ByPass 
Sven Bardos
źródło
1

po wypróbowaniu wszystkich sugerowanych rozwiązań nic nie działało na VS 2015 Update 2

usunięcie folderu pakietu z folderu rozwiązania i przywrócenie go z programu Visual Studio działało dla mnie

Nerdroid
źródło
1

Miałem podobny problem. Naprawiłem to, włączając funkcję „Windows PowerShell 2.0” w „Włącz lub wyłącz funkcje systemu Windows”. Zauważ, że ta funkcja jest domyślnie włączona, wyłączyłem ją ręcznie kilka dni temu.

Pracuję na Windows 10 Pro 64bit i ten sam problem był z Visual Studio 2015 i 2017 (aplikacja 32bit i 64bit)

Adnan Mulalic
źródło
0

Pobierz i zainstaluj szablony administracyjne dla programu 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.

AKTUALIZACJA - EDYCJA:

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

To może zostać naprawione po tym, jak nadałem mojemu PowerShellowi więcej uprawnień, nie wiedząc, że zepsuje to Visual Studio 2013 i 2015

Tom Stickel
źródło
0

Ten problem nie zawsze jest związany z zasadami wykonywania programu PowerShell. Mój komputer jest skonfigurowany jako „nieograniczony” zarówno dla programu PowerShell x64, jak i x86, ale nadal pojawia się ten komunikat o błędzie od czasu do czasu w programie Visual Studio 2013.

Kiedy próbuję otworzyć konsolę Menedżera pakietów:

Program Windows PowerShell pomyślnie zaktualizował zasady wykonywania, ale ustawienie jest zastępowane przez zasady zdefiniowane w bardziej szczegółowym zakresie. Z powodu zastąpienia, twoja powłoka zachowa obecną efektywną politykę wykonywania Unrestricted. Wpisz „Get-ExecutionPolicy -List”, aby wyświetlić ustawienia zasad wykonywania. Aby uzyskać więcej informacji, zobacz „Get-Help Set-ExecutionPolicy”.

To nie jest prawidłowy komunikat o błędzie.

Ponowne uruchomienie programu Visual Studio nie zawsze rozwiązuje problem.

Uruchomienie procesu jako administrator nigdy nie rozwiązuje problemu.

Podobnie jak Declan, ostatnia aktualizacja wtyczki Menedżera pakietów rozwiązała problem: 2.8.60723.765

Vilmir
źródło
0

Ustaw zasady wykonywania na Bypass zamiast Unrestricted lub RemoteSigned; ten samouczek zawiera pełniejsze instrukcje . Ponadto, jeśli masz problemy z używaniem PowerShell do zmiany zasad, autor pokazuje, jak to zmienić w Regedit.

Charles Driver Jr.
źródło
Nieograniczony powinien działać równie dobrze - tylko ostrzega cię, gdy możesz robić coś niebezpiecznego, w którym Bypass po prostu kontynuuje i uruchamia polecenie.
Auspex
0

W ciemności jest bardzo dużo pchnięć, więc dodam własne.

W moim przypadku otrzymałem również komunikat, że brakuje pliku blokady oraz zalecenie uruchomienia dnu restorew konsoli menedżera pakietów. Zrobiłem to, zrestartowałem VS i wszystko działa.

Auspex
źródło
0

U mnie zadziałało:

  1. Ustaw zasady wykonywania na nieograniczone.
  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. W ISE potrzebujesz Enable-ScriptBrowser

I masz moduł, skrypt i analizator w swoim ISE.

Uruchom w systemie Windows 10 Pro, host konsoli x64 5.0.10586.122

Powodzenia!

Dima
źródło