由于“无法初始化PowerShell主机”而无法安装nuget软件包


173

突然,升级Nuget软件包时出现此错误。我遇到的任何修复都没有起作用。我正在使用Visual Studio 2013。

'Newtonsoft.Json 6.0.3'已经安装。

将'Newtonsoft.Json 6.0.3'添加到Tournaments.Notifications。

已将“ Newtonsoft.Json 6.0.3”成功添加到Tournaments.Notifications中。

执行脚本文件'F:\ My Webs \ BasketballTournaments \ MainBranch \ packages \ Newtonsoft.Json.6.0.3 \ tools \ install.ps1'。

无法初始化PowerShell主机。如果您的PowerShell执行策略设置设置为AllSigned,请打开“程序包管理器控制台”以首先初始化主机。

程序包管理器控制台

尝试在“文件系统”提供程序上执行InitializeDefaultDrives操作失败。

如果我等待控制台中的初始化完成,则可以添加一些软件包。


嗨,迈克。我有完全一样的问题。您是否已经解决了这个问题,并且有一个工作正常的nuget软件包管理器?
Magnus Backeus,2014年

我也有同样的问题。我已经将Powershell的执行策略设置为“不受限制”,但这无济于事。我在程序包管理器控制台中安装程序包没问题。
Adamy

5
刚刚经历了同样的问题。该解决方案帮助了我:stackoverflow.com/questions/10457039/...
奥莱克西氮杂

1
我在Windows 10上遇到相同的错误。我必须从“程序和功能”>“打开或关闭Windows功能”中启用Powershell 2.0,然后在重新启动Visual Studio后一切正常。
twoleggedhorse

Answers:


193

将执行策略设置为RemoteSigned或Unrestricted应该可以。必须通过PowerShell控制台在管理员模式下进行更改。请注意,更改将根据PowerShell控制台的位版本(32位或64位)应用。因此,如果要在需要特定策略的Visual Studio(32位版本)中安装软件包,则应通过PowerShell(x86)更改策略的设置。

PowerShell中(以管理员身份)将策略设置为不受限制的命令(如@Gabriel在注释中指出的)为:

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

将策略设置为无限制后,您将需要在安装完成后将策略设置回其原始状态。


83
为我工作。当您在64位系统上的PowerShell中更改ExecutionPolicy时,将仅对64位版本的PowerShell进行更改。但是VS是32位进程,“ Package Manager Console”也是32位进程。要解决此问题,您可以start-job { Set-ExecutionPolicy Unrestricted } -RunAs32 | wait-job | Receive-Job在64位PowerShell控制台中执行。
加百利

69
之后,您需要重新启动Visual Studio。
Danny Varod 2014年

工作良好。可惜的是,包装本身提出了一个无效的解决方案。而且不要忘了以后再启用原始策略。
Mohoch 2014年

9
VS 2013结束,以管理员身份运行,开始正常运行...很烦
Rusty

9
我有这个问题在VS2015和简单地更新的NuGet paackage管理者解决了这个问题
Shawson

55

完成操作后,请记住要重新启动Visual Studio。 Set-ExecutionPolicy Unrestricted在PowerShell(x86)中。

如果这不起作用,请Set-ExecutionPolicy RemoteSigned在PowerShell(x86)中尝试,然后重新启动Visual Studio。


51

默认情况下,出于安全原因,PowerShell脚本的执行非常有限。为了在NuGet中使用,我们需要打开门。

1.步骤

打开Windows PowerShell,运行为Administrator

2.步骤

NuGet使用的是32位控制台,因此不会受到64位控制台更改的影响。运行以下脚本,以确保您正在配置32位控制台。

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

3.步骤

重新开始 Visual Studio


谢谢!只有当我按照您所说的方式执行Windows powershell命令时,它才起作用。非常感谢!
Echiban

这适用于以下环境:Windows XP,Visual Studio 2010 Web开发人员Express。我关闭了视觉工作室。下载了microsoft.com/en-us/download/confirmation.aspx?id=16818 Powershell。已安装Powershell。运行powershell并执行开始作业{Set-ExecutionPolicy RemoteSigned} -RunAs32 | 等待工作| 接收工作。开始使用Visual Studio,并使用nuget。有效。
开发人员MariusŽilėnas2016年

1
@muflix:在那种情况下是不可能的,至少我不会。最后,这是一个安全问题,因此留给了管理员
Michael Sander

之后我们需要关门吗?怎么样?
Omid-RH

关闭它会使nuget无法操作,因为它需要在安装包期间执行脚本
Michael Sander

25

我在“管理NuGet程序包”对话框中遇到相同的问题,我使用了一种可能会帮助其他人的变通方法-从程序包管理器控制台中运行:

如果我使用命令行powershell commandlet install-package,一切都很好。

我不利于更改安全设置“仅使其起作用”。


您应该问一个新问题。
2014年

3
我认为这没有必要提出新的问题,因为它与提出的问题直接相关。我改写了这篇文章,以免听起来不像是一个新问题,而是一个心怀不满的开发人员的沉思。
艾伦2014年

@Allan该答案的结尾(后期编辑)应该是评论或问题。
Danny Varod 2014年

感谢您的输入,Danny,我希望与那些不想或无法更改安全设置的人分享我的经验以及可能的解决方法。答案现在确实读得更好。
艾伦2014年

Get-Package -Filter PartOfPackageName搜索已安装的软件包,Install-Package PackageName -Version 7.0.1以安装特定版本的软件包。不要忘记在Package Manager控制台的顶部选择Default Project
Lu55 '16

24

没有答案对我有用。

所有策略都是正确的,但安装软件包时出现错误

无法初始化PowerShell主机。如果您的PowerShell执行策略设置设置为AllSigned,请打开“程序包管理器控制台”以首先初始化主机。

解决方案:我已经卸载NuGet包管理器插件,并重新安装它。


4
卸载和重新安装确实是唯一的帮助。这个问题也在这里描述:github.com/NuGet/Home/issues/974
Zsolt

2
我没有先卸载就重新安装了NuGet VSIX软件包,从而解决了该问题。
戴夫


16

以管理员身份运行Visual Studio对我有用。


1
同上,尽管人们应该记住在安装软件包后关闭VS,并在常规权限下重新打开。
Liam Laverty 2015年

7

我的Visual Studio 2015出现此问题。我再次卸载并重新安装了NuGet软件包管理器。它为我工作。


怎么样?它抱怨说它正在被另一个进程使用
Brandon

7

我更新了Nuget软件包管理器,并为我修复了它。


6

对于我来说,这是最近从6.0.4开始发生的,我认为这不是一个很好的解决方案,但这对我有所帮助。关闭Visual Studio

  1. 以管理员身份打开Windows PowerShell提示符(非常重要),然后运行以下命令:Set-ExecutionPolicy Bypass
  2. 打开Visual Studio,打开您的解决方案,然后使用Nuget安装JSON.Net(或任何包含它的软件包作为依赖项)。
  3. 一切正常后,建议您使用以下命令将Powershell执行策略重新设置为strict:Set-ExecutionPolicy Restricted

5

升级到Windows 10后,我遇到了同样的问题。

这对我有用

  1. 关闭Visual Studio
  2. 以管理员身份运行Powershell
  3. Set-ExecutionPolicy Unrestricted
  4. 以管理员身份运行Visual Studio
  5. 清理项目并添加nuget包

如果仍然无法正常工作,请尝试编辑 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

添加以下内容

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

devenv.exe.config在VS2013和VS2015中,将Powershell依赖项添加到都是唯一对我有用的修复程序。VS2013:C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\12.0VS2015:C:\Users\<username>\AppData\Local\Microsoft\VisualStudio\14.0对我不起作用的是更改执行策略,更改注册表中的执行策略,重新安装程序包管理器,修复Visual Studio,重新启动Visual Studio,重新启动Windows。
Rubanov

哇!所有其他方法在VS 2015中都没有为我解决。仅将依赖项添加到devenv.exe.config即可提供帮助。之后,我还找到了stackoverflow.com/questions/12638289/…。非常感谢你!!!
nharrer


4

默认情况下,我的Windows 10 64位仅启用了Powershell 1.0版。我更改了控制面板/程序/程序和功能/关闭了Windows功能。

确保已启用Windows Powershell 2.0引擎。

以非管理员模式重新启动VS2015,并正确安装所有软件包。


我也有Windows 10 64位,并且需要启用Windows Powershell 2.0引擎才能使Package Manager Console正常工作。奇怪的是,这个问题已经存在了一段时间,并且Microsoft在Visual Studio 2017安装过程中没有启用Powershell 2.0引擎。
JSWilson


3

我需要做的就是重新启动Visual Studio,打开NuGet Package Manager Console,然后使用有效的Manage NuGet Packages对话框。



3

如果以上答案对您有帮助-

  1. 打开运行-Windows + R
  2. 打开注册表编辑器-键入regedit.exe
  3. 打开-HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ PowerShell
  4. 在右窗格中-修改“ ExecutionPolicy”,并将其“值数据”保留为空白。
  5. 重新启动Visual Studio,现在Powershell可以正确初始化了。

2

在尝试了各种建议的修复程序之后,终于可以通过在Visual Studio中更新NuGet软件包管理器扩展来解决。

这是在“工具”->“扩展和更新”下,然后在“扩展和更新”对话框中的“已更新”->“ Visual Studio库”中完成的。可能需要重新启动Visual Studio。



2

VS2015:更新了NuGet并开始工作。


同样在这里。使用VS2015,并且刚刚更新了Nuget软件包管理器,它可以正常工作。
iheartcsharp


2

如果以上方法均无济于事,请查看是否可以更新Visual Studio。

当我尝试安装Newtonsoft.Json时,我在Visual Studio 2017社区遇到了相同的问题。的ExecutionPolicy变化并没有帮助(我试过同时使用PowerShell和注册表编辑器)。我也尝试卸载并安装NuGet。

运行VS2017安装文件后,它要求更新Visual Studio。更新后,所有问题均消失了。


1

对我来说,将执行策略设置为“不受限制”是行不通的。我必须通过进入控制面板来修复vs2013安装。修复安装对我有用。


1

有同样的问题,这对我来说解决了(Powershell作为管理员):

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

1

在尝试了所有建议的解决方案后,VS 2015 Update 2无法正常工作

从解决方案文件夹中删除package文件夹,然后从Visual Studio恢复它对我有用


1

我有一个类似的问题。我已经通过“打开或关闭Windows功能”中的“ Windows PowerShell 2.0”功能修复了该问题。请注意,此功能默认情况下处于启用状态,几天前我手动将其关闭。

我正在使用Windows 10 Pro 64位操作系统,而Visual Studio 2015和2017(32位和64位应用程序)存在相同的问题


0

下载并安装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.

更新-编辑:

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

这是在我给我的Powershell更多权限之后不知道会破坏Visual Studio 2013和2015的固定解决方案


0

此问题并不总是与PowerShell执行策略有关。对于PowerShell x64和x86,我的机器都配置为“不受限制”,但是在Visual Studio 2013中,有时仍会收到此错误消息。

当我尝试打开程序包管理器控制台时:

Windows PowerShell成功更新了您的执行策略,但是该设置被在更特定范围内定义的策略覆盖。由于覆盖,您的外壳将保留其当前有效的执行策略“不受限制”。键入“ Get-ExecutionPolicy -List”以查看您的执行策略设置。有关更多信息,请参见“ Get-Help Set-ExecutionPolicy”。

这不是有效的错误消息。

重新启动Visual Studio并不总是可以解决问题。

以管理员身份运行该进程永远无法解决问题。

像Declan一样,Package Manager插件的最新更新解决了该问题:2.8.60723.765


0

将执行策略设置为“绕过”,而不是“不受限制”或“远程签名”;本教程提供了更完整的说明。另外,如果您在使用PowerShell更改策略时遇到麻烦,那么作者将向您展示如何在Regedit中进行更改。


Unrestricted应该也能正常工作-它只是在您可能做不安全的事情时警告您,Bypass会继续运行该命令。
Auspex

0

这里黑暗中有很多刺伤,所以我将添加自己的刺伤。

就我而言,我还收到一条消息,提示缺少锁定文件,并建议dnu restore在程序包管理器控制台中运行。我这样做了,重新启动了VS,现在一切正常。


0

对我有用的是:

  1. 将执行策略设置为无限制。
  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. 在ISE中,您需要 Enable-ScriptBrowser

而且您的ISE中具有模块,脚本和分析器。

在Win 10 Pro,x64控制台主机5.0.10586.122中运行

祝好运!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.