178 votes

Impossible d'installer le paquet nuget en raison du message "Failed to initialize the PowerShell host" (échec de l'initialisation de l'hôte PowerShell).

Tout à coup, j'obtiens cette erreur lors de la mise à jour des paquets Nuget. Aucune des solutions que j'ai trouvées ne fonctionne. J'utilise Visual Studio 2013.

Newtonsoft.Json 6.0.3 est déjà installé.

Ajout de 'Newtonsoft.Json 6.0.3' à Tournaments.Notifications.

Newtonsoft.Json 6.0.3 a été ajouté avec succès à Tournaments.Notifications.

Exécution du fichier script ' F:\My Webs \BasketballTournaments\MainBranch\packages\Newtonsoft.Json.6.0.3\tools\install.ps1 '.

Échec de l'initialisation de l'hôte PowerShell. Si votre paramètre de stratégie d'exécution PowerShell est défini sur AllSigned, ouvrez la console Package Manager pour initialiser l'hôte en premier.

Console du gestionnaire de paquets

La tentative d'exécution de l'opération InitializeDefaultDrives sur le fournisseur 'FileSystem' a échoué.

Si j'attends que l'initialisation se termine dans la console, j'ai pu ajouter quelques paquets.

0 votes

Bonjour Mike. J'ai exactement le même problème. Avez-vous réussi à résoudre le problème et vous avez un gestionnaire de paquets nuget qui fonctionne ?

0 votes

J'ai le même problème. J'ai déjà défini la politique d'exécution de Powershell sur Unrestricted, mais cela ne m'aide pas. J'installe le paquet dans la console du gestionnaire de paquets sans problème.

5 votes

Je viens de rencontrer le même problème. Cette solution m'a aidé : stackoverflow.com/questions/10457039/

197voto

jellonek Points 451

La définition d'une politique d'exécution sur RemoteSigned ou Unrestricted devrait fonctionner. Elle doit être modifiée en mode administrateur via une console PowerShell. Attention, les changements seront appliqués en fonction de la version bit de la console PowerShell, donc 32bit ou 64 bit. Ainsi, si vous voulez installer un paquet dans Visual Studio (version 32 bits) qui nécessite une politique spécifique, vous devez modifier les paramètres de la politique via PowerShell (x86).

La commande dans PowerShell (en tant qu'administrateur) pour définir la politique sur unrestricted (comme indiqué par @Gabriel dans les commentaires) est :

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

Après avoir défini la politique comme étant non restreinte, vous voudrez la remettre à sa valeur d'origine une fois l'installation terminée.

84 votes

Ça a marché pour moi. Lorsque vous modifiez la ExecutionPolicy dans PowerShell sur des systèmes 64 bits, elle ne sera modifiée que pour la version 64 bits de PowerShell. Mais VS est un processus 32 bits et la "Package Manager Console" est un processus 32 bits aussi. Pour résoudre ce problème, vous pouvez exécuter start-job { Set-ExecutionPolicy Unrestricted } -RunAs32 | wait-job | Receive-Job dans une console PowerShell 64 bits.

70 votes

Vous devez ensuite redémarrer Visual Studio.

0 votes

Cela fonctionne bien. C'est dommage que le paquet lui-même suggère une solution qui ne fonctionne pas. Et n'oubliez pas d'activer la politique originale par la suite.

56voto

Sirar Salih Points 101

N'oubliez pas de redémarrer Visual Studio après avoir effectué l'opération. Set-ExecutionPolicy Unrestricted dans PowerShell (x86).

Si cela ne fonctionne pas, essayez Set-ExecutionPolicy RemoteSigned dans PowerShell (x86) puis redémarrez Visual Studio.

53voto

Michael Sander Points 136

Par défaut, l'exécution du script de PowerShell est très limitée pour des raisons de sécurité. Pour une utilisation au sein de NuGet, nous devons ouvrir les portes.

1. Étape

Ouvrir Windows PowerShell en tant que Administrator

2. Étape

NuGet utilise la console 32 bits, elle ne sera donc pas affectée par les modifications apportées à la console 64 bits. Exécutez le script suivant pour vous assurer que vous configurez la console 32 bits.

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

3. Étape

Redémarrer Visual Studio

26voto

Allan Points 101

J'ai le même problème avec la boîte de dialogue Gérer les paquets NuGet, j'utilise une solution de contournement qui pourrait en aider d'autres - l'exécution à partir de la console du gestionnaire de paquets :

Si j'utilise la ligne de commande powershell commandlet install-package, tout va bien.

Je suis opposé à l'idée de modifier un paramètre de sécurité "juste pour que ça marche".

0 votes

Vous devriez poser une nouvelle question.

3 votes

Je n'ai pas pensé que cela justifiait une nouvelle question car elle est directement liée au problème soulevé. J'ai reformulé le message pour qu'il ne ressemble pas tant à une nouvelle question qu'aux réflexions d'un développeur mécontent.

0 votes

@Allan La fin de cette réponse (post-edit) devrait être soit un commentaire, soit une question.

25voto

Troopers Points 2396

Aucune réponse n'a fonctionné pour moi.

Toutes les politiques sont correctes mais j'ai l'erreur suivante lors de l'installation d'un paquet

Impossible d'initialiser l'hôte PowerShell. Si votre stratégie d'exécution PowerShell d'exécution PowerShell est défini sur AllSigned, ouvrez la console Package Manager pour initialiser l'hôte en premier.

El solution : J'ai désinstallé el gestionnaire de paquets nuget et réinstallé il.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X