Visual studio 2010 为什么VisualStudio中的各个项目的ExecutionPolicy行为不同?

Visual studio 2010 为什么VisualStudio中的各个项目的ExecutionPolicy行为不同?,visual-studio-2010,nuget,Visual Studio 2010,Nuget,我在一台特定的PC上使用NuGet已经有相当长的一段时间了。现在,我在VS2010中创建了一个新项目(如果需要的话,这是一个使用单页应用程序模板的MVC4beta项目)。当我选择 工具/库包管理器/包管理器控制台 控制台窗口打开,但显示错误: 文件C:\ProgramFiles(x86)\Microsoft Visual Studio 无法加载10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Package Manager\1.7.3

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

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

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

文件C:\ProgramFiles(x86)\Microsoft Visual Studio 无法加载10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Package Manager\1.7.30402.9028\Modules\NuGet\profile.ps1 因为在此系统上禁用了脚本的执行。请 有关更多详细信息,请参阅“获取有关签名的帮助”

但是,其他项目仍然可以打开并使用PackageManager控制台

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

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

获取执行策略

PowerShell返回

受限的

我基于a的理解是,如果ExecutionPolicy受到限制,那么脚本根本不应该运行

为什么现有项目可以使用Package Manager控制台,而新项目不能使用?


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

我遇到了相同的问题,并通过以下方法解决了此问题:

  • 以管理员身份打开Powershell
  • 输入以下命令“Set ExecutionPolicy RemoteSigned”
  • 重新启动Visual Studio,包管理器控制台按预期工作
但需要注意的是,Powershell将向您发出警告

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

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

此外,我发现(在另一个线程中)有帮助。您可能必须更改不同版本的PowerShell上的权限(32位和64位版本需要单独的权限)

发件人:

  • 64位PowerShell路径:C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe
  • 32位PowerShell路径:C:\Windows\SysWOW64\WindowsPowerShell\v1.0\PowerShell.exe
此外,这些措施中的一项应起作用:

  • 设置ExecutionPolicy远程签名
  • 设置ExecutionPolicy不受限制

解决此问题的另一种方法是将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。

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


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

我也间歇性地遇到这个问题。我只是又碰到了它,又碰到了这根线。在我的最新案例中,我意识到我有两次打开VS 2013(这通常不是问题,我一直都在这样做)。由于其他人似乎唯一能解决这个问题的共同主题是与要求管理员权限有关,因此我尝试了一下,关闭了VS的两个实例,并在新实例中重新打开了我的解决方案。运行了nuget安装,它工作正常


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

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

因为我们需要在网络中的远程服务器上的共享上创建一个项目,并且遇到了类似的问题,下面是有效的方法:

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

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

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

NuGet Package Manager控制台将PowerShell的执行策略设置为RemoteSigned,并将作用域设置为Process,因此它只影响Visual Studio。更改Visual Studio的策略不需要Visual Studio以管理员身份运行。您在命令行中看到的执行策略不需要更改。在我的机器上,这被设置为受限。但是,这些都不能解释为什么新项目显示此错误,而现有项目显示此错误。如果非管理用户无论如何都可以在每个进程的基础上更改策略,则在计算机范围内设置策略有什么意义?组策略设置可以防止您覆盖