Não é possível instalar o pacote nuget devido a "Falha ao inicializar o host do PowerShell"

173

De repente, estou recebendo esse erro ao atualizar pacotes Nuget. Nenhuma das correções que eu encontrei funcionou. Estou usando o Visual Studio 2013.

'Newtonsoft.Json 6.0.3' já instalado.

Adicionando 'Newtonsoft.Json 6.0.3' a Tournaments.Notifications.

Adicionada com sucesso 'Newtonsoft.Json 6.0.3' a Tournaments.Notifications.

Executando o arquivo de script 'F: \ My Webs \ BasketballTournaments \ MainBranch \ packages \ Newtonsoft.Json.6.0.3 \ tools \ install.ps1'.

Falha ao inicializar o host do PowerShell. Se sua configuração de diretiva de execução do PowerShell estiver definida como AllSigned, abra o Console do Gerenciador de Pacotes para inicializar o host primeiro.

Console do Gerenciador de Pacotes

A tentativa de executar a operação InitializeDefaultDrives no provedor 'FileSystem' falhou.

Se eu esperar a conclusão da inicialização no console, consegui adicionar alguns pacotes.

Mike Flynn
fonte
Olá Mike. Eu tenho exatamente o mesmo problema. Você conseguiu resolver o problema e possui um gerenciador de pacotes de pepitas em funcionamento?
Magnus Backeus
Eu tenho o mesmo problema. Eu já defini a política de execução do Powershell como Irrestrita, mas não ajuda. Eu instalo o pacote no Package Manager Console não há problema.
Adamy
5
Acabei de experimentar o mesmo problema. Esta solução me ajudou: stackoverflow.com/questions/10457039/…
Oleksii Aza 13/14
1
Eu tive o mesmo erro no Windows 10. Eu tive que habilitar o Powershell 2.0 nos "programas e recursos"> "Ativar ou desativar os recursos do Windows" e tudo funcionou bem depois de reiniciar o visual studio.
27517

Respostas:

193

Definir uma política de execução como RemoteSigned ou Unrestricted deve funcionar. Ele deve ser alterado no modo de administrador por meio de um console do PowerShell. Esteja ciente de que as alterações serão aplicadas de acordo com a versão de bit do console do PowerShell, portanto, de 32 bits ou 64 bits. Portanto, se você deseja instalar um pacote no Visual Studio (versão de 32 bits) que exija uma política específica, altere as configurações da política via PowerShell (x86).

O comando no PowerShell (como administrador) para definir a política como irrestrita (conforme observado por @Gabriel nos comentários) é:

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

Depois de definir a política como irrestrita, você desejará restaurar a política de volta ao original após a conclusão da instalação.

jellonek
fonte
83
Trabalhou para mim. Quando você altera o ExecutionPolicy no PowerShell em sistemas de 64 bits, ele é alterado apenas para a versão de 64 bits do PowerShell. Mas o VS é um processo de 32 bits e o "Console do Gerenciador de Pacotes" também é um processo de 32 bits. Para corrigir isso, você pode executar start-job { Set-ExecutionPolicy Unrestricted } -RunAs32 | wait-job | Receive-Jobem um console do PowerShell de 64 bits.
Gabriel
69
Você precisa reiniciar o Visual Studio posteriormente.
Danny Varod
Funciona bem. É uma pena que o próprio pacote sugira uma solução que não funcione. E não se esqueça de ativar a política original posteriormente.
Mohoch 17/11/14
9
Fechado o VS 2013, executado como administrador, começou a funcionar bem ... wiered
Rusty
9
Eu tive esse problema no VS2015 e simplesmente atualizando o gerente paackage NuGet resolveu o problema
Shawson
55

Lembre-se de reiniciar o Visual Studio depois de fazer o Set-ExecutionPolicy UnrestrictedPowerShell (x86).

Se isso não funcionar, tente Set-ExecutionPolicy RemoteSignedno PowerShell (x86) e reinicie o Visual Studio.

Sirar Salih
fonte
51

Por padrão, a execução do script do PowerShell é muito limitada por motivos de segurança. Para uso no NuGet, precisamos abrir as portas.

1. Etapa

Abra Windows PowerShell, execute comoAdministrator

2. Etapa

O NuGet está usando o console de 32 bits, portanto não será afetado por alterações no console de 64 bits. Execute o script a seguir para verificar se você está configurando o console de 32 bits.

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

3. Etapa

Reiniciar Visual Studio

Michael Sander
fonte
Obrigado! Somente quando eu comandei o Windows PowerShell da maneira que você declarou, funcionou. Muito obrigado!
Echiban
Isso funcionou no seguinte ambiente: windows xp, visual studio 2010 Web developer express. Fechei o estúdio visual. Download do microsoft.com/en-us/download/confirmation.aspx?id=16818 Powershell. PowerShell instalado. Execute o PowerShell e execute o trabalho de início {Set-ExecutionPolicy RemoteSigned} -RunAs32 | trabalho de espera | Receive-Job. Iniciou o visual studio e usou a pepita. Funcionou.
Developer Marius Žilėnas
1
@uflix: não é possível nesse caso, pelo menos eu não saberia como. No final, é uma questão de segurança e, portanto, deixada aos administradores
Michael Sander
precisamos fechar as portas depois? como?
Omid-RH
fechá-lo deixaria inoperável NuGet desde que ele precisa para executar scripts durante a instalação do packes
Michael Sander
25

Tenho o mesmo problema na caixa de diálogo Gerenciar pacotes NuGet, uso uma solução alternativa que pode ajudar outras pessoas - executando a partir do console do gerenciador de pacotes:

Se eu usar a linha de comando powershell commandlet install-package, está tudo bem.

Sou adverso em alterar uma configuração de segurança "apenas para fazê-la funcionar".

Allan
fonte
Você deve fazer uma nova pergunta.
precisa saber é o seguinte
3
Não achei que isso justificasse uma nova pergunta, pois se relaciona diretamente à questão levantada. Eu reformulei o post para não parecer uma nova pergunta, mas as reflexões de um desenvolvedor descontente.
Allan
@ Allan O final desta resposta (pós-edição) deve ser um comentário ou uma pergunta.
Danny Varod
Obrigado pela sua contribuição, Danny, esperava compartilhar minha experiência e uma possível solução alternativa para aquelas pessoas que não queriam ou não podiam alterar as configurações de segurança. A resposta está melhor agora.
Allan
Get-Package -Filter PartOfPackageNamepara pesquisar no pacote instalado, Install-Package PackageName -Version 7.0.1para instalar uma versão específica do pacote. Não se esqueça de selecionar Padrão Projeto no topo da Console Package Manager
Lu55
24

Nenhuma resposta funcionou para mim.

Todas as políticas estavam corretas, mas eu tenho o erro ao instalar um pacote

Falha ao inicializar o host do PowerShell. Se sua configuração de diretiva de execução do PowerShell estiver definida como AllSigned, abra o Console do Gerenciador de Pacotes para inicializar o host primeiro.

A solução : Desinstalei o plug- in do gerenciador de pacotes nuget e reinstalei -o.

Troopers
fonte
4
Desinstalar e reinstalar foi a única coisa que realmente ajudou. Esta edição também é descrita aqui: github.com/NuGet/Home/issues/974
Zsolt
2
Reinstalei o pacote NuGet VSIX sem desinstalá-lo primeiro, o que resolveu o problema.
Dave
+1 marketplace.visualstudio.com/… para VS2015
hoang
16

A execução do Visual Studio como administrador funcionou para mim.

Sudhir
fonte
1
O mesmo vale, embora as pessoas se lembrem de fechar o VS uma vez que seu pacote esteja instalado e reabrir com permissões regulares.
Liam Laverty
7

Eu tive esse problema com o Visual Studio 2015. Desinstalei e reinstalei o NuGet Package Manager novamente. Funcionou para mim.

Henry.K
fonte
Quão? Ele reclama que está sendo usado por outro processo
Brandon
7

Atualizei o gerenciador de pacotes Nuget e o corrigi para mim.

DeclanMcD
fonte
6

Isso começou a acontecer com o 6.0.4 recentemente para mim, não acho que seja uma solução muito boa, mas aqui está o que me ajudou. Feche o Visual Studio

  1. Abra um prompt do Windows PowerShell como administrador (muito importante) e execute o seguinte comando: Set-ExecutionPolicy Bypass
  2. Abra o Visual Studio, abra sua solução e use o Nuget para instalar o JSON.Net (ou qualquer pacote que o inclua como dependência).
  3. Depois que tudo estiver funcionando, recomendo que a política de execução do PowerShell volte a ser restrita com o seguinte comando: Set-ExecutionPolicy Restricted
Goutam Singh
fonte
5

Eu tive o mesmo problema depois de atualizar para o Windows 10.

Isso funcionou para mim

  1. Feche o Visual Studio
  2. Execute o PowerShell como administrador
  3. Corre Set-ExecutionPolicy Unrestricted
  4. Execute o Visual studio como administrador
  5. Limpe o projeto e adicione o pacote nuget

Se ainda assim não funcionar, tente editar 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

Adicione o seguinte

    <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
fonte
Adicionar dependências do Powershell ao devenv.exe.configarquivo é a única correção que funcionou para mim no VS2013 e no VS2015. VS2013: C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\12.0VS2015: C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\14.0O que não funcionou para mim foi alterar a política de execução, alterar a política de execução no registro, reinstalar o gerenciador de pacotes, reparar o visual studio, reiniciar o visual studio, reiniciar o windows.
Rubanov 06/07/19
Wooooow. Todos os outros métodos não resolveram isso para mim no VS 2015. Somente a adição de dependências ao devenv.exe.config ajudou. Depois disso, eu também encontrei stackoverflow.com/questions/12638289/… . Muito obrigado !!!
Nharrer 4/07
4

Por padrão, meu Windows 10 de 64 bits só tinha o Powershell versão 1.0 ativado. Alterei o painel de controle / Programas / Programas e recursos / Ativar recursos do Windows.

Verifique se o mecanismo do Windows Powershell 2.0 está ativado.

Reinicie o VS2015 no modo não administrador e com todos os pacotes instalados corretamente.

DKrause
fonte
Também tenho o Windows 10 de 64 bits e precisava ativar o mecanismo do Windows Powershell 2.0 para que o Console do Gerenciador de Pacotes funcionasse. É estranho que esse problema já exista há algum tempo e a Microsoft não tenha ativado o mecanismo do Powershell 2.0 como parte do processo de instalação do Visual Studio 2017.
JSWilson
4

Eu tive o mesmo problema com o vs2013 e a alteração da política de execução não a corrigiu. A única solução de trabalho que encontrei foi desinstalar o Nuget do VS e instalá-lo novamente. As etapas estão aqui: https://stackoverflow.com/a/32619961/3853238

Doğa Benli
fonte
3

Tudo o que eu precisava fazer era reiniciar o Visual Studio, abrir o NuGet Package Manager Consolee, em seguida, usar a Manage NuGet Packagescaixa de diálogo funcionada.

Nameless One
fonte
3

Feche todas as instâncias do visual studio e tente novamente. Funcionou para mim :)

Mohini Mhetre
fonte
3

Se as respostas acima não funcionarem para você -

  1. Execução aberta - windows + R
  2. Abra o editor de registro - digite regedit.exe
  3. Abrir - HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ PowerShell
  4. No painel direito - Modifique "ExecutionPolicy" e mantenha seus "Value Data" em branco.
  5. Reinicie seu estúdio visual. Agora, o seu PowerShell pode inicializar corretamente.
Riquinho
fonte
2

Depois de tentar várias correções sugeridas, finalmente foi resolvido atualizando a extensão do NuGet Package Manager no Visual Studio.

Isso é feito em Ferramentas -> Extensões e atualizações, na caixa de diálogo Extensões e atualizações Atualizado -> Galeria do Visual Studio. Uma reinicialização do Visual Studio pode ser necessária.

Oskar Sjöberg
fonte
2

Se você usar o VS 2013 Update 5, instale manualmente uma atualização 2.8.7 para o NuGet Packet Manager.

O relatório de erros tem mais detalhes.

Vladimir Zhukov
fonte
2

VS2015: Atualizado o NuGet e funcionou.

Gubi
fonte
O mesmo aqui. Estava usando o VS2015 e acabou de atualizar o Nuget Package Manager e funcionou.
Iheartcsharp
2

Se nenhuma das opções acima ajudar, veja se você pode atualizar o Visual Studio.

Eu tive o mesmo problema com a Comunidade do Visual Studio 2017 quando tentei instalar o Newtonsoft.Json. A ExecutionPolicyalteração não ajudou (tentei usar o PowerShell e o Editor do Registro). Eu também tentei desinstalar e instalar o NuGet.

Depois de executar o arquivo de instalação do VS2017, ele solicitou a atualização do Visual Studio. Todos os problemas desapareceram após a atualização.

Tigran
fonte
1

Para mim, definir a política de execução como Irrestrito não funcionou. Eu tive que reparar a instalação do vs2013 entrando no Painel de Controle. Reparar a instalação funcionou para mim.

DanKodi
fonte
1

Teve o mesmo problema e isso resolveu para mim (PowerShell como administrador):

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

depois de tentar toda a solução sugerida, nada funcionou no VS 2015, atualização 2

excluir a pasta do pacote da pasta da solução e restaurá-la do visual studio funcionou para mim

Nerdroid
fonte
1

Eu tive um problema parecido. Eu o corrigi ativando o recurso "Windows PowerShell 2.0" em "Ativar ou desativar os recursos do Windows". Observe que esse recurso está ativado por padrão; eu o desativei manualmente alguns dias atrás.

Estou trabalhando no Windows 10 Pro de 64 bits e o mesmo problema ocorreu com o Visual Studio 2015 e 2017 (aplicativo de 32 bits e 64 bits)

Adnan Mulalic
fonte
0

Baixe e instale modelos administrativos para 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.

ATUALIZAÇÃO - EDITAR:

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

Isso é o que eu consertei depois que eu dei mais permissões ao meu PowerShell, sem saber que ele iria atrapalhar o visual studio 2013 e 2015

Tom Stickel
fonte
0

Esse problema nem sempre está relacionado à diretiva de execução do PowerShell. Minha máquina está configurada como "Irrestrita" para o PowerShell x64 e x86, mas ainda recebo essa mensagem de erro de tempos em tempos no Visual Studio 2013.

Quando tento abrir o Package Manager Console:

O Windows PowerShell atualizou sua política de execução com êxito, mas a configuração é substituída por uma política definida em um escopo mais específico. Devido à substituição, seu shell manterá sua atual política de execução efetiva de Irrestrito. Digite "Get-ExecutionPolicy -List" para visualizar suas configurações de diretiva de execução. Para mais informações, consulte "Get-Help Set-ExecutionPolicy".

Esta não é uma mensagem de erro válida.

A reinicialização do Visual Studio nem sempre resolve o problema.

A execução do processo como administrador nunca resolve o problema.

Como Declan, a atualização mais recente do plug-in do Gerenciador de Pacotes corrigiu o problema: 2.8.60723.765

Vilmir
fonte
0

Defina a política de execução como Ignorar em vez de Irrestrito ou Remoto; este tutorial fornece instruções mais completas . Além disso, se você estiver com problemas para usar o PowerShell para alterar a política, o autor mostrará como alterá-lo no Regedit.

Charles Driver Jr.
fonte
Irrestrito deve funcionar da mesma maneira - apenas avisa quando você pode estar fazendo algo inseguro, em que o Bypass simplesmente executa o comando.
Auspex
0

Há uma enorme quantidade de facadas no escuro aqui, então vou adicionar as minhas.

No meu caso, também recebi uma mensagem informando que havia um arquivo de bloqueio ausente e uma recomendação para executar dnu restoreno console do gerenciador de pacotes. Eu fiz isso, reiniciei o VS e tudo está funcionando agora.

Auspex
fonte
0

O que funcionou para mim é:

  1. Defina a política de execução como irrestrita.
  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. No ISE, você precisa Enable-ScriptBrowser

E você tem módulo, script e analisador em seu ISE.

Executar no Win 10 Pro, host do console x64 5.0.10586.122

Boa sorte!

Dima
fonte