【发布时间】:2012-05-04 22:41:55
【问题描述】:
我在特定 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”。
但是,其他项目仍然可以打开和使用包管理器控制台。
在每种情况下,VS2010 都以同一用户身份运行。
如果我打开命令提示符(使用运行 VS2010 的同一帐户),启动 PowerShell,然后输入命令
获取执行策略
PowerShell 返回
受限
我基于Scott Hanselman blog 的理解是,如果 ExecutionPolicy 受到限制,则脚本根本不应该运行。
为什么现有项目能够使用包管理器控制台,而新项目却不能?
更新:将 ExecutionPolicy 更改为 AllSigned 和 重新启动 VS2010 解决了眼前的问题,但我的主要问题是为什么其他项目能够绕过已建立的 ExecutionPolicy。 VS2010没有以管理员身份运行。
【问题讨论】:
-
NuGet 包管理器控制台将 PowerShell 的执行策略设置为 RemoteSigned,并且范围设置为 Process,因此它只影响 Visual Studio。更改 Visual Studio 的策略不需要 Visual Studio 以管理员身份运行。您从命令行看到的执行策略不需要更改。在我的机器上,这设置为受限。但是,这些都不能解释为什么您的新项目会显示此错误而现有项目却没有。
-
如果非管理员用户可以在每个进程的基础上更改策略,那么在机器范围内设置策略有什么意义?
-
组策略设置可以防止您覆盖当前进程的设置,但本地计算机设置本身不能。请参阅以下 msdn 帖子中的执行策略优先级部分 - technet.microsoft.com/en-us/library/dd347641.aspx
-
我很高兴看到这里实际上没有接受答案,就像我看到很多人在有人提供包含解决方法但实际上并没有回答问题的答案时所做的那样真正的问题。在过去的几个月里,我已经多次遇到这种情况,无法弄清楚发生了什么。在 VS2014 上,鉴于多个项目的库已过时,我会收到一些 ExecutionPolicy 错误消息,而另一些则可以成功更新。安装包在新的解决方案和项目中工作正常,但不适用于现有的。我想要一个答案,而不是“试试这个”的建议。