Nuget-Paket kann nicht installiert werden, da "PowerShell-Host konnte nicht initialisiert werden"

173

Beim Upgrade von Nuget-Paketen wird plötzlich dieser Fehler angezeigt. Keine der Korrekturen, auf die ich gestoßen bin, funktioniert. Ich verwende Visual Studio 2013.

'Newtonsoft.Json 6.0.3' bereits installiert.

Hinzufügen von 'Newtonsoft.Json 6.0.3' zu Tournaments.Notifications.

'Newtonsoft.Json 6.0.3' wurde erfolgreich zu Tournaments.Notifications hinzugefügt.

Ausführen der Skriptdatei 'F: \ My Webs \ BasketballTournaments \ MainBranch \ packages \ Newtonsoft.Json.6.0.3 \ tools \ install.ps1'.

Fehler beim Initialisieren des PowerShell-Hosts. Wenn Ihre PowerShell-Ausführungsrichtlinieneinstellung auf AllSigned festgelegt ist, öffnen Sie die Package Manager-Konsole, um den Host zuerst zu initialisieren.

Package Manager-Konsole

Der Versuch, den InitializeDefaultDrives-Vorgang auf dem 'FileSystem'-Anbieter auszuführen, ist fehlgeschlagen.

Wenn ich auf den Abschluss der Initialisierung in der Konsole warte, konnte ich einige Pakete hinzufügen.

Mike Flynn
quelle
Hallo Mike. Ich habe genau das gleiche Problem. Haben Sie es geschafft, das Problem zu lösen, und Sie haben einen funktionierenden Nuget-Paketmanager?
Magnus Backeus
Ich habe das gleiche Problem. Ich habe die Ausführungsrichtlinie von Powershell bereits auf "Uneingeschränkt" festgelegt, aber es hilft nicht. Ich installiere das Paket in Package Manager Console kein Problem.
Adamy
5
Ich habe gerade das gleiche Problem erlebt. Diese Lösung hat mir geholfen: stackoverflow.com/questions/10457039/…
Oleksii Aza
1
Ich hatte den gleichen Fehler unter Windows 10. Ich musste Powershell 2.0 über "Programme und Funktionen"> "Windows-Funktionen ein- oder ausschalten" aktivieren und nach dem Neustart von Visual Studio funktionierte alles einwandfrei.
twoleggedhorse

Antworten:

193

Das Festlegen einer Ausführungsrichtlinie auf RemoteSigned oder Unrestricted sollte funktionieren. Sie muss im Administratormodus über eine PowerShell-Konsole geändert werden. Beachten Sie, dass Änderungen entsprechend der Bit-Version der PowerShell-Konsole angewendet werden, also 32-Bit oder 64-Bit. Wenn Sie also ein Paket in Visual Studio (32-Bit-Version) installieren möchten, für das eine bestimmte Richtlinie erforderlich ist, sollten Sie die Einstellungen der Richtlinie über PowerShell (x86) ändern.

Der Befehl in PowerShell (als Administrator) zum Festlegen der Richtlinie auf uneingeschränkt (wie von @Gabriel in den Kommentaren angegeben) lautet:

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

Nachdem Sie die Richtlinie auf uneingeschränkt festgelegt haben, möchten Sie die Richtlinie nach Abschluss der Installation wieder auf den ursprünglichen Wert zurücksetzen.

jellonek
quelle
83
Hat für mich gearbeitet. Wenn Sie die ExecutionPolicy in PowerShell auf 64-Bit-Systemen ändern, wird sie nur für die 64-Bit-Version von PowerShell geändert. Aber VS ist ein 32-Bit-Prozess und die "Package Manager Console" ist auch ein 32-Bit-Prozess. Um dies zu beheben, können Sie es start-job { Set-ExecutionPolicy Unrestricted } -RunAs32 | wait-job | Receive-Jobin einer 64-Bit-PowerShell-Konsole ausführen .
Gabriel
69
Sie müssen Visual Studio anschließend neu starten.
Danny Varod
Funktioniert gut. Schade, dass das Paket selbst eine Lösung vorschlägt, die nicht funktioniert. Und vergessen Sie nicht, die ursprüngliche Richtlinie anschließend einzuschalten.
Mohoch
9
Geschlossen die VS 2013, als Administrator ausgeführt, begann gut zu arbeiten ... wiered
Rusty
9
Ich hatte dieses Problem in VS2015 und durch einfaches Aktualisieren des NuGet-Paketmanagers wurde das Problem behoben
Shawson
55

Denken Sie daran, Visual Studio nach dem Set-ExecutionPolicy UnrestrictedAusführen in PowerShell (x86) neu zu starten .

Wenn dies nicht funktioniert, versuchen Sie es Set-ExecutionPolicy RemoteSignedin PowerShell (x86) und starten Sie Visual Studio neu.

Sirar Salih
quelle
51

Standardmäßig ist die Ausführung von PowerShell-Skripten aus Sicherheitsgründen sehr eingeschränkt. Für den Einsatz in NuGet müssen wir die Türen öffnen.

1. Schritt

Öffnen Windows PowerShell, ausführen alsAdministrator

2. Schritt

NuGet verwendet die 32-Bit-Konsole, sodass Änderungen an der 64-Bit-Konsole keine Auswirkungen haben. Führen Sie das folgende Skript aus, um sicherzustellen, dass Sie die 32-Bit-Konsole konfigurieren.

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

3. Schritt

Neustart Visual Studio

Michael Sander
quelle
Danke dir! Erst als ich den Windows Powershell-Befehl so ausgeführt habe, wie Sie es angegeben haben, hat es funktioniert. Vielen Dank!
Echiban
Dies funktionierte für folgende Umgebung: Windows XP, Visual Studio 2010 Web Developer Express. Ich schloss das visuelle Studio. Heruntergeladen microsoft.com/en-us/download/confirmation.aspx?id=16818 Powershell. Installierte Powershell. Führen Sie Powershell aus und führen Sie den Startjob {Set-ExecutionPolicy RemoteSigned} -RunAs32 | aus Wartezeit | Job empfangen. Startete Visual Studio und benutzte Nuget. Es funktionierte.
Entwickler Marius Žilėnas
1
@muflix: in diesem fall nicht möglich, zumindest würde ich nicht wissen wie. Am Ende ist es ein Sicherheitsproblem und somit den Administratoren überlassen
Michael Sander
Müssen wir die Türen danach schließen? Wie?
Omid-RH
Das Schließen würde Nuget funktionsunfähig machen, da es Skripte während der Installation von Paketen ausführen muss
Michael Sander
25

Ich habe das gleiche Problem mit dem Dialogfeld "NuGet-Pakete verwalten". Ich verwende eine Problemumgehung, die anderen helfen kann - von der Paketmanagerkonsole aus:

Wenn ich das Installationspaket für das Powershell-Befehlszeilen-Befehlszeilenpaket verwende, ist alles in Ordnung.

Ich bin dagegen, eine Sicherheitseinstellung zu ändern, "nur damit sie funktioniert".

Allan
quelle
Sie sollten eine neue Frage stellen.
Tay2510
3
Ich dachte nicht, dass dies eine neue Frage rechtfertigt, da sie sich direkt auf das aufgeworfene Problem bezieht. Ich habe den Beitrag umformuliert, um nicht so sehr nach einer neuen Frage zu klingen, sondern nach den Gedanken eines verärgerten Entwicklers.
Allan
@Allan Das Ende dieser Antwort (Nachbearbeitung) sollte entweder ein Kommentar oder eine Frage sein.
Danny Varod
Vielen Dank für Ihre Eingabe Danny, ich hatte gehofft, meine Erfahrungen und eine mögliche Problemumgehung für diejenigen Personen zu teilen, die die Sicherheitseinstellungen nicht ändern wollten oder konnten. Die Antwort liest sich jetzt besser.
Allan
Get-Package -Filter PartOfPackageNameum das installierte Paket zu durchsuchen, Install-Package PackageName -Version 7.0.1um eine bestimmte Version des Pakets zu installieren. Vergessen Sie nicht, Standardprojekt oben in der Package Manager-Konsole
auszuwählen
24

Für mich haben keine Antworten funktioniert.

Alle Richtlinien waren korrekt, aber ich habe den Fehler bei der Installation eines Pakets

Fehler beim Initialisieren des PowerShell-Hosts. Wenn Ihre PowerShell-Ausführungsrichtlinieneinstellung auf AllSigned festgelegt ist, öffnen Sie die Package Manager-Konsole, um den Host zuerst zu initialisieren.

Die Lösung : Ich habe den Nuget-Paketmanager deinstalliert Plugin und neu installiert .

Soldaten
quelle
4
Das Deinstallieren und Neuinstallieren war das einzige, was wirklich geholfen hat. Dieses Problem wird auch hier beschrieben: github.com/NuGet/Home/issues/974
Zsolt
2
Ich habe das NuGet VSIX-Paket neu installiert, ohne es zuerst zu deinstallieren, wodurch das Problem behoben wurde.
Dave
+1 market.visualstudio.com/… für VS2015
hoang
16

Das Ausführen von Visual Studio als Administrator hat bei mir funktioniert.

Sudhir
quelle
1
Das Gleiche gilt, obwohl die Benutzer daran denken sollten, VS nach der Installation Ihres Pakets zu schließen und unter regulären Berechtigungen erneut zu öffnen.
Liam Laverty
7

Ich hatte dieses Problem mit meinem Visual Studio 2015. Ich habe NuGet Package Manager erneut deinstalliert und installiert. Es hat bei mir funktioniert.

Henry.K
quelle
Wie? Es beschwert sich, dass es von einem anderen Prozess verwendet wird
Brandon
7

Ich habe den Nuget-Paketmanager aktualisiert und das hat ihn für mich behoben.

DeclanMcD
quelle
6

Dies begann vor kurzem mit 6.0.4 für mich. Ich denke nicht, dass dies eine sehr gute Lösung ist, aber hier ist, was mir geholfen hat. Schließen Sie Visual Studio

  1. Öffnen Sie eine Windows PowerShell-Eingabeaufforderung als Administrator (sehr wichtig) und führen Sie den folgenden Befehl aus: Set-ExecutionPolicy Bypass
  2. Öffnen Sie Visual Studio, öffnen Sie Ihre Lösung und installieren Sie JSON.Net mit Nuget (oder einem beliebigen Paket, das es als Abhängigkeit enthält).
  3. Sobald alles funktioniert, empfehle ich, die Powershell-Ausführungsrichtlinie mit dem folgenden Befehl auf eingeschränkt zurückzusetzen: Set-ExecutionPolicy Restricted
Goutam Singh
quelle
5

Ich hatte das gleiche Problem nach dem Upgrade auf Windows 10.

Das hat bei mir funktioniert

  1. Schließen Sie Visual Studio
  2. Führen Sie Powershell als Administrator aus
  3. Lauf Set-ExecutionPolicy Unrestricted
  4. Führen Sie Visual Studio als Administrator aus
  5. Bereinigen Sie das Projekt und fügen Sie das Nuget-Paket hinzu

Wenn es immer noch nicht funktioniert, versuchen Sie es zu bearbeiten 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

Fügen Sie Folgendes hinzu

    <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
quelle
Das Hinzufügen von Powershell-Abhängigkeiten zu devenv.exe.configist der einzige Fix, der sowohl in VS2013 als auch in VS2015 für mich funktioniert hat. VS2013: C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\12.0VS2015: C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\14.0Was bei mir nicht funktioniert hat, war die Änderung der Ausführungsrichtlinie, die Änderung der Ausführungsrichtlinie in der Registrierung, die Neuinstallation des Paketmanagers, die Reparatur von Visual Studio, der Neustart von Visual Studio und der Neustart von Windows.
Rubanov
Wooooow. Alle anderen Methoden haben es in VS 2015 nicht für mich gelöst. Nur das Hinzufügen der Abhängigkeiten zu devenv.exe.config hat geholfen. Danach fand ich auch stackoverflow.com/questions/12638289/… . Vielen herzlichen Dank!!!
nharrer
4

Standardmäßig war in meinem Windows 10 64-Bit nur Powershell Version 1.0 aktiviert. Ich habe das Bedienfeld / Programme / Programme und Funktionen / Windows-Funktionen ein- und ausschalten geändert.

Stellen Sie sicher, dass die Windows Powershell 2.0-Engine aktiviert ist.

Starten Sie VS2015 im Nicht-Administrator-Modus neu und mit allen korrekt installierten Paketen.

DKrause
quelle
Ich habe auch Windows 10 64-Bit und musste die Windows Powershell 2.0-Engine aktivieren, damit die Package Manager-Konsole funktioniert. Es ist seltsam, dass dieses Problem schon seit einiger Zeit besteht und Microsoft die Powershell 2.0-Engine im Rahmen des Visual Studio 2017-Installationsprozesses nicht aktiviert hat.
JSWilson
4

Ich hatte das gleiche Problem mit vs2013 und das Ändern der Ausführungsrichtlinie hat es nicht behoben. Die einzige funktionierende Lösung, die ich gefunden habe, war, Duget von VS zu deinstallieren und erneut zu installieren. Schritte finden Sie hier: https://stackoverflow.com/a/32619961/3853238

Doğa Benli
quelle
3

Alles, was ich tun musste, war Visual Studio neu zu starten, das NuGet zu öffnen Package Manager Consoleund dann das Manage NuGet PackagesDialogfeld zu verwenden.

Namenloser
quelle
3

Schließen Sie alle Visual Studio-Instanzen und versuchen Sie es erneut. Es hat bei mir funktioniert :)

Mohini Mhetre
quelle
3

Wenn die obigen Antworten nicht für Sie funktionieren -

  1. Öffnen Sie Run - Windows + R.
  2. Öffnen Sie den Registrierungseditor - geben Sie regedit.exe ein
  3. Öffnen - HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ PowerShell
  4. Im rechten Bereich - Ändern Sie "ExecutionPolicy" und lassen Sie die "Wertdaten" leer.
  5. Starten Sie Ihr Visual Studio neu. Jetzt kann Ihre Powershell ordnungsgemäß initialisiert werden.
Richie Rich
quelle
2

Nachdem verschiedene vorgeschlagene Korrekturen ausprobiert wurden, wurde es schließlich durch Aktualisieren der NuGet Package Manager-Erweiterung in Visual Studio behoben.

Dies erfolgt unter Extras -> Erweiterungen und Updates und dann im Dialogfeld Erweiterungen und Updates Aktualisiert -> Visual Studio-Galerie. Möglicherweise ist ein Neustart von Visual Studio erforderlich.

Oskar Sjöberg
quelle
2

Wenn Sie VS 2013 Update 5 verwenden, sollten Sie ein Update 2.8.7 für NuGet Packet Manager manuell installieren .

Der Fehlerbericht enthält weitere Details.

Vladimir Zhukov
quelle
2

VS2015: NuGet wurde aktualisiert und funktioniert.

Gubi
quelle
Hier gilt das gleiche. Ich habe VS2015 verwendet und gerade den Nuget Package Manager aktualisiert und es hat funktioniert.
Iheartcsharp
2

Wenn keiner der oben genannten Punkte hilfreich ist, prüfen Sie, ob Sie Visual Studio aktualisieren können.

Ich hatte das gleiche Problem mit Visual Studio 2017 Community, als ich versuchte, Newtonsoft.Json zu installieren. DasExecutionPolicy Änderung hat nicht geholfen (ich habe versucht, sowohl PowerShell als auch Registry Editor zu verwenden). Ich habe auch versucht, NuGet zu deinstallieren und zu installieren.

Nach dem Ausführen der VS2017-Setup-Datei wurde nach einem Update von Visual Studio gefragt. Alle Probleme verschwanden nach dem Update.

Tigran
quelle
1

Für mich hat es nicht funktioniert, die Ausführungsrichtlinie auf "Uneingeschränkt" zu setzen. Ich musste die vs2013- Installation reparieren, indem ich in die Systemsteuerung ging. Die Reparatur der Installation hat bei mir funktioniert.

DanKodi
quelle
1

Hatte das gleiche Problem und dies löste es für mich (Powershell als Admin):

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

Nachdem Sie alle vorgeschlagenen Lösungen ausprobiert hatten, funktionierte in VS 2015 Update 2 nichts mehr

Das Löschen des Paketordners aus dem Lösungsordner und das Wiederherstellen aus Visual Studio hat bei mir funktioniert

Nerdroid
quelle
1

Ich hatte ein ähnliches Problem. Ich habe das Problem behoben, indem ich die Funktion "Windows PowerShell 2.0" unter "Windows-Funktionen aktivieren oder deaktivieren" aktiviert habe. Beachten Sie, dass diese Funktion standardmäßig aktiviert ist. Ich habe sie vor einigen Tagen manuell deaktiviert.

Ich arbeite an Windows 10 Pro 64bit und das gleiche Problem war mit Visual Studio 2015 und 2017 (32bit und 64bit App)

Adnan Mulalic
quelle
0

Laden Sie administrative Vorlagen für Windows PowerShell herunter und installieren Sie sie

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.

UPDATE - BEARBEITEN:

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

Dies wurde behoben, nachdem ich meiner Powershell mehr Berechtigungen erteilt hatte, ohne zu wissen, dass dies das Visual Studio 2013 und 2015 durcheinander bringen würde

Tom Stickel
quelle
0

Dieses Problem hängt nicht immer mit der PowerShell-Ausführungsrichtlinie zusammen. Mein Computer ist sowohl für PowerShell x64 als auch für x86 als "Uneingeschränkt" konfiguriert. In Visual Studio 2013 wird diese Fehlermeldung jedoch gelegentlich angezeigt.

Wenn ich versuche, die Package Manager-Konsole zu öffnen:

Windows PowerShell hat Ihre Ausführungsrichtlinie erfolgreich aktualisiert, die Einstellung wird jedoch von einer Richtlinie überschrieben, die in einem bestimmten Bereich definiert ist. Aufgrund der Überschreibung behält Ihre Shell ihre derzeitige effektive Ausführungsrichtlinie "Uneingeschränkt" bei. Geben Sie "Get-ExecutionPolicy -List" ein, um Ihre Ausführungsrichtlinieneinstellungen anzuzeigen. Weitere Informationen finden Sie unter "Get-Help Set-ExecutionPolicy".

Dies ist keine gültige Fehlermeldung.

Durch einen Neustart von Visual Studio wird das Problem nicht immer behoben.

Das Ausführen des Prozesses als Administrator löst das Problem nie.

Wie bei Declan wurde das Problem durch das neueste Update des Package Manager-Plugins behoben: 2.8.60723.765

Vilmir
quelle
0

Setzen Sie die Ausführungsrichtlinie auf Bypass anstelle von Unrestricted oder RemoteSigned. Dieses Tutorial enthält ausführlichere Anweisungen . Wenn Sie Probleme haben, die Richtlinie mit PowerShell zu ändern, zeigt Ihnen der Autor, wie Sie sie in Regedit ändern können.

Charles Driver Jr.
quelle
Uneingeschränkt sollte genauso gut funktionieren - es warnt Sie lediglich, wenn Sie etwas Unsicheres tun, bei dem Bypass den Befehl einfach ausführen würde.
Auspex
0

Es gibt hier sehr viele Stiche im Dunkeln, also werde ich meine eigenen hinzufügen.

In meinem Fall erhielt ich auch die Meldung, dass eine Sperrdatei fehlt, und eine Empfehlung zur Ausführung dnu restorein der Paketmanagerkonsole. Ich habe dies getan, VS neu gestartet und jetzt funktioniert alles.

Auspex
quelle
0

Was für mich funktioniert hat ist:

  1. Setzen Sie die Ausführungsrichtlinie auf Uneingeschränkt.
  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. In ISE brauchen Sie Enable-ScriptBrowser

Und Sie haben Modul, Skript und Analysator in Ihrer ISE.

Führen Sie Win 10 Pro, x64 Console Host 5.0.10586.122 aus

Viel Glück!

Dima
quelle