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.


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.


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.


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


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".


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 .


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


16

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


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.


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.


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

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>

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.


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


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.


3

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


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.

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.



2

VS2015: NuGet wurde aktualisiert und funktioniert.


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.


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.


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 

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


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)


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


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


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.


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.


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!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.