为什么ExecutionPolicy行为因Visual Studio中的项目而异?

Eri*_* J. 65 visual-studio-2010 nuget

我在特定的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控制台.

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

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

GET-ExecutionPolicy

PowerShell返回

受限

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

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

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

小智 123

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

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

值得注意的是,Powershell会给你一个警告

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

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

  • +1哦,是啊!这是Windows.我只需要重启东西,直到它工作.;) (8认同)

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

此外,BOTH这些应该工作:

  • Set-ExecutionPolicy RemoteSigned
  • Set-ExecutionPolicy不受限制

  • +1我今天第一次遇到这个错误,我显然只有2个powershell中的一个设置了我的PowerShell策略......我刚才注意到你在帖子中翻了32bit和64bit吗?你有32位的SysWow64和64位的System32.这看起来倒退了. (2认同)

Dan*_*rod 7

另一种解决方法是将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"
Run Code Online (Sandbox Code Playgroud)

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


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


小智 6

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