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

Posted

技术标签:

【中文标题】由于“无法初始化 PowerShell 主机”而无法安装 nuget 包【英文标题】:Can't install nuget package because of "Failed to initialize the PowerShell host" 【发布时间】:2014-06-14 18:12:38 【问题描述】:

突然间,我在升级 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 包管理器? 我也有同样的问题。我已经将 Powershell 的执行策略设置为 Unrestricted,但它没有帮助。我在包管理器控制台中安装包没问题。 刚刚遇到同样的问题。这个解决方案帮助了我:***.com/questions/10457039/… 我在 Windows 10 上遇到了同样的错误。我必须从“程序和功能”>“打开或关闭 Windows 功能”启用 Powershell 2.0,然后在重新启动 Visual Studio 后一切正常。 【参考方案1】:

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

PowerShell(以管理员身份)中将策略设置为不受限制的命令(如 cmets 中的 @Gabriel 所述)是:

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

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

【讨论】:

为我工作。当您在 64 位系统上更改 PowerShell 中的 ExecutionPolicy 时,它只会更改 64 位版本的 PowerShell。但是 VS 是 32 位进程,“包管理器控制台”也是 32 位进程。要解决此问题,您可以在 64 位 PowerShell 控制台中执行 start-job Set-ExecutionPolicy Unrestricted -RunAs32 | wait-job | Receive-Job 之后需要重启Visual Studio。 工作正常。遗憾的是,软件包本身提出了一个不起作用的解决方案。并且不要忘记之后打开原始策略。 关闭 VS 2013,以管理员身份运行,开始正常工作...wiered 我在 VS2015 中遇到了这个问题,只需更新 NuGet 包管理器即可解决问题【参考方案2】:

记得在 PowerShell (x86) 中完成 Set-ExecutionPolicy Unrestricted 后重新启动 Visual Studio。

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

【讨论】:

【参考方案3】:

出于安全原因,默认情况下 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 命令时,它才起作用。非常感谢! 这适用于以下环境:windows xp、visual studio 2010 Web developer express。我关闭了视觉工作室。已下载microsoft.com/en-us/download/confirmation.aspx?id=16818 Powershell。已安装 Powershell。运行 powershell 并执行 start-job Set-ExecutionPolicy RemoteSigned -RunAs32 |等待工作 |接收作业。启动了视觉工作室并使用了 nuget。它奏效了。 @muflix:在那种情况下不可能,至少我不知道怎么做。最后这是一个安全问题,因此留给管理员 之后需要关门吗?怎么样? 关闭它会使 nuget 无法运行,因为它需要在安装包期间执行脚本【参考方案4】:

我在“管理 NuGet 包”对话框中遇到了同样的问题,我使用了一种可能对其他人有所帮助的解决方法 - 从包管理器控制台运行:

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

我反对更改安全设置“只是为了让它工作”。

【讨论】:

你应该问一个新问题。 我认为这不值得提出新问题,因为它与所提出的问题直接相关。我改写了这篇文章,以免听起来像一个新问题,而是一个心怀不满的开发人员的沉思。 @Allan 这个答案的结尾(编辑后)应该是评论或问题。 感谢您的意见 Danny,我希望为那些不想或无法更改安全设置的人分享我的经验和可能的解决方法。答案现在读起来确实更好。 Get-Package -Filter PartOfPackageName 搜索已安装的包,Install-Package PackageName -Version 7.0.1 安装特定版本的包。不要忘记选择 Package Manager Console 顶部的 Default Project【参考方案5】:

没有对我有用的答案。

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

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

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

【讨论】:

卸载和重新安装是唯一真正有帮助的事情。这里也描述了这个问题:github.com/NuGet/Home/issues/974 我重新安装了 NuGet VSIX 包,没有先卸载它,这解决了问题。 +1 marketplace.visualstudio.com/… 用于 VS2015【参考方案6】:

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

【讨论】:

同上,但人们应该记得在安装包后关闭 VS,然后在常规权限下重新打开。 完全同意@LiamLaverty【参考方案7】:

我的 Visual Studio 2015 遇到了这个问题。 我再次卸载并重新安装了 NuGet 包管理器。 它对我有用。

【讨论】:

怎么样?它抱怨它正被另一个进程使用【参考方案8】:

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

【讨论】:

【参考方案9】:

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

    以管理员身份打开 Windows PowerShell 提示符(非常重要)并运行以下命令:Set-ExecutionPolicy Bypass 打开 Visual Studio,打开您的解决方案并使用 Nuget 安装 JSON.Net(或任何包含它作为依赖项的包)。 一旦一切正常,我建议使用以下命令将 powershell 执行策略设置回受限: Set-ExecutionPolicy 受限

【讨论】:

【参考方案10】:

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

这对我有用

    关闭 Visual Studio 以管理员身份运行 Powershell 运行Set-ExecutionPolicy Unrestricted 以管理员身份运行 Visual Studio 清理项目并添加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>

【讨论】:

将 Powershell 依赖项添加到 devenv.exe.config 是在 VS2013 和 VS2015 中对我有用的唯一修复。 VS2013:C:\Users\&lt;username&gt;\AppData\Local\Microsoft\VisualStudio\12.0 VS2015:C:\Users\&lt;username&gt;\AppData\Local\Microsoft\VisualStudio\14.0 对我不起作用的是更改执行策略,更改注册表中的执行策略,重新安装包管理器,修复 Visual Studio,重新启动 Visual Studio,重新启动 Windows。 呜呜呜。在 VS 2015 中,所有其他方法都没有为我解决它。只有将依赖项添加到 devenv.exe.config 才有帮助。在此之后我还找到了***.com/questions/12638289/…。非常感谢!!!【参考方案11】:

这个 Nuget 修复对我有用:

https://github.com/NuGet/Home/issues/974#issuecomment-124774650

【讨论】:

【参考方案12】:

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

确保已启用 Windows Powershell 2.0 引擎。

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

【讨论】:

我也有 Windows 10 64 位,我需要启用 Windows Powershell 2.0 引擎才能使包管理器控制台工作。奇怪的是,这个问题已经存在了一段时间,而且微软还没有在 Visual Studio 2017 安装过程中启用 Powershell 2.0 引擎。【参考方案13】:

我在 vs2013 上遇到了同样的问题,更改执行策略并没有解决它。 我发现的唯一可行的解​​决方案是从 VS 卸载 Nuget 并再次安装。步骤在这里:https://***.com/a/32619961/3853238

【讨论】:

【参考方案14】:

如果以上答案对你有用 -

    打开运行 - windows + R 打开注册表编辑器 - 键入 regedit.exe 打开 - HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\PowerShell 在右侧窗格中 - 修改“ExecutionPolicy”并将其“Value Data”保留为空白。 重启你的visual studio,现在你的Powershell可以正常初始化了。

【讨论】:

【参考方案15】:

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

【讨论】:

【参考方案16】:

在尝试了各种建议的修复后,最终通过更新 Visual Studio 中的 NuGet 包管理器扩展来解决。

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

【讨论】:

【参考方案17】:

关闭所有 Visual Studio 实例,然后重试。它对我有用:)

【讨论】:

【参考方案18】:

遇到了同样的问题,这为我解决了(Powershell 作为管理员):

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

【讨论】:

【参考方案19】:

如果你使用 VS 2013 Update 5,你应该为 NuGet Packet Manager 手动安装一个update 2.8.7。

bug report 有更多详细信息。

【讨论】:

【参考方案20】:

VS2015:更新了 NuGet 并正常工作。

【讨论】:

这里也一样。正在使用 VS2015,刚刚更新了 Nuget 包管理器,它就可以工作了。【参考方案21】:

对我来说,诀窍是使用以下链接重新安装 NuGet 包管理器:

对比 2013: https://github.com/NuGet/Home/releases/download/2.8.7/NuGet.Tools.vsix

对比 2015: https://github.com/NuGet/Home/releases/download/3.1.1/NuGet.Tools.vsix

【讨论】:

【参考方案22】:

如果以上方法都没有帮助,请查看是否可以更新 Visual Studio。

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

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

【讨论】:

【参考方案23】:

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

【讨论】:

【参考方案24】:

在尝试了所有建议的解决方案后,VS 2015 更新 2 没有任何效果

从解决方案文件夹中删除包文件夹并从 Visual Studio 中恢复它对我有用

【讨论】:

【参考方案25】:

我遇到了类似的问题。 我已通过在“打开或关闭 Windows 功能”中打开“Windows PowerShell 2.0”功能来修复它。 注意这个功能是默认开启的,我前几天手动关闭的。

我正在使用 64 位 Windows 10 Pro,Visual Studio 2015 和 2017(32 位和 64 位应用程序)也存在同样的问题

【讨论】:

【参考方案26】:

下载安装Administrative Templates for 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

【讨论】:

【参考方案27】:

此问题并不总是与 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

【讨论】:

【参考方案28】:

将执行策略设置为 Bypass 而不是 Unrestricted 或 RemoteSigned; this tutorial gives fuller instructions。此外,如果您在使用 PowerShell 更改策略时遇到问题,那么作者会向您展示如何在 Regedit 中进行更改。

【讨论】:

Unrestricted 应该也能正常工作——它只是在你可能正在做不安全的事情时警告你,而 Bypass 会继续运行命令。【参考方案29】:

这里有很多暗处,所以我会添加自己的。

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

【讨论】:

【参考方案30】:

对我有用的是:

    将执行策略设置为无限制。 Find-Module ISEModuleBrowserAddon | Install-Module Import-Module ISEModuleBrowserAddon Find-Module ISEScriptAnalyzerAddOn | Install-Module Import-Module ISEScriptAnalyzerAddOn Import-Module ScriptBrowser 在 ISE 中,您需要 Enable-ScriptBrowser

您的 ISE 中有模块、脚本和分析器。

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

祝你好运!

【讨论】:

以上是关于由于“无法初始化 PowerShell 主机”而无法安装 nuget 包的主要内容,如果未能解决你的问题,请参考以下文章

原创NuGet 出现“无法初始化 PowerShell 主机,如果将你的 PowerShell 执行策略设置设置为 AllSigned ,请先打开程序包管理控制台以初始化该主机” 错误的解决方法

Tomcat 6.0.28 由于浸泡测试期间线程阻塞而无响应

带有 Visual Studio 2013 的 github - 由于未提交的更改而无法拉取

使用 Infineon XMC4800 MCU 和 Segger 进行 GDB 调试中断而无断点

使用代理时远程结束关闭连接而无响应

安全性往往是相对而无绝对