65

我在特定的 PC 上使用 NuGet 已经有一段时间了。现在,我在 VS2010 中创建了一个新项目(如果重要的话,它是一个使用单页应用程序模板的 MVC 4 Beta 项目)。当我选择

工具/库包管理器/包管理器控制台

控制台窗口打开,但显示错误:

文件 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Package Manager\1.7.30402.9028\Modules\NuGet\profile.ps1 无法加载,因为在这个系统。有关更多详细信息,请参阅“get-help about_signing”。

但是,其他项目仍然可以打开和使用 Package Manager Console。

在每种情况下,VS2010 都以同一用户身份运行。

如果我打开命令提示符(使用运行 VS2010 的同一帐户),启动 PowerShell,然后输入命令

获取执行策略

PowerShell 返回

受限制的

我基于Scott Hanselman 博客的理解是,如果 ExecutionPolicy 受到限制,则脚本根本不应该运行。

为什么现有项目能够使用包管理器控制台,而新项目却不能?

更新:将 ExecutionPolicy 更改为 AllSigned重新启动 VS2010 解决了眼前的问题,但我的主要问题是为什么其他项目能够绕过已建立的 ExecutionPolicy。VS2010没有以管理员身份运行。

4

8 回答 8

123

我遇到了同样的问题并通过以下方式解决了它:

  • 以管理员身份打开 Powershell
  • 输入以下命令“Set-ExecutionPolicy RemoteSigned”
  • 重新启动 Visual Studio,包管理器控制台按预期工作

重要的是要注意 Powershell 会给你一个警告

“执行策略有助于保护您免受您不信任的脚本的影响。更改执行策略可能会使您面临 about_Execution_Policies 帮助主题中描述的安全风险。您要更改执行策略吗?”

并且应小心启用此功能,并应阅读有关安全风险的帮助主题中的更多信息。

于 2012-05-23T10:56:24.540 回答
31

除了Murries 的回答之外,我发现jellonek 的帖子(在另一个线程上)很有帮助。您可能需要更改不同版本的 PowerShell 的权限(32 位和 64 位版本需要不同的权限)。

如何判断 PowerShell 是 32 位还是 64 位

  • 64 位 PowerShell 路径:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • 32 位 PowerShell 路径:C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

此外,这两个都应该工作:

  • Set-ExecutionPolicy RemoteSigned
  • Set-ExecutionPolicy 不受限制
于 2014-06-17T18:20:55.167 回答
8

解决此问题的另一种方法是将 Regedit 文件与以下内容合并:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell]
"ExecutionPolicy"="Unrestricted"


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell]
"ExecutionPolicy"="Unrestricted"

(创建一个名为 NuGetPowerShellFix.txt 的文本文件,将上面的内容复制粘贴到其中,重命名为 NuGetPowerShellFix.reg,然后运行。)


合并上述文件后,重新启动 Visual Studio。

于 2014-07-09T10:35:44.427 回答
6

如果您在 Visual Studio 2013 中使用 NuGet 并遇到这个烦人的错误,请转到工具 | NuGet 包管理器 | 包管理器设置并单击“清除包缓存”。重新启动 Visual Studio。我知道有多种解决方案,所以这是另一个尝试。

于 2015-09-28T19:13:49.530 回答
3

我也间歇性地遇到过这个问题。我刚刚再次遇到它并遇到了这个线程。在我最近的案例中,我意识到我打开了两次 VS 2013(这通常不是问题,我一直都这样做)。由于其他似乎解决它的唯一共同主题在环境上与要求管理员权限有关,因此我试了一下并关闭了 VS 的两个实例并在新实例中重新打开了我的解决方案。运行 nuget 安装,它运行顺利。

基于此,我认为这是导致此虚假错误的文件权限问题。有点像Windows在调试会话后锁定了bin目录中的文件并且不允许您编译解决方案。

于 2014-12-30T12:02:52.540 回答
2

您可以通过不以管理员身份运行 Visual Studio 来解决此问题。

不同的原因,相同的错误信息;可能对遇到这个的人有所帮助。

于 2014-09-08T19:38:55.713 回答
1

由于我们需要在我们网络中的远程服务器上的共享上创建一个项目并遇到类似的问题,这里是有效的:

  • 将共享映射为网络驱动器,例如 R:(但我想如果没有此映射它也可以工作)
  • 打开 Internet 选项 > 安全 > 本地 Intranet > 站点 > 高级(通过 IE 或控制面板)
  • 添加“R:”或“file://server.domain.xy”(一旦您重新打开对话框,前者将自动变为后者)
  • 运行 x86 PowerShell 可执行文件并执行“S​​et-ExecutionPolicy RemoteSigned”

一旦我完成了所有这些,Visual Studio 并没有在再次打开解决方案时抱怨该项目位于不受信任的位置,并且它成功地为在创建新的 MVC 应用程序时自动安装的包运行了所有 PowerShell 脚本。

于 2015-06-11T13:46:10.290 回答
0

我现在遇到了这个问题,我认为对我有用的是我只需要重新启动 Visual Studio 2013 并以管理员身份运行它……对我来说工作得很快。

于 2015-04-06T23:16:14.687 回答