Entity Framework PowerShell 脚本无法由 Visual Studio 加载,因为它的操作被软件限制策略阻止

Entity Framework PowerShell script cannot be loaded by Visual Studio because its operation is blocked by software restriction policies

当我在使用 Entity Framework 的项目中的 Visual Studio 2017 v15.9.6 中加载程序包管理器控制台时,我收到以下错误:

\packages\EntityFramework.6.2.0\tools\init.ps1 cannot be loaded because its operation is blocked by software restriction policies, such as those created by using Group Policy. At line:1 char:45 + ... rgs+=$_}; & 'C:\Bitbucket\project-path\packages\EntityFramework.6.2. ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess

这使我无法 运行 执行特定于 Entity Framework 的命令,例如 "Update-Database" 或 "Add-Migration"。

以下是我尝试过的方法:

  1. 重新安装Visual Studio
  2. 在组策略编辑器中,对于计算机配置和用户配置,我启用了位于 "Administrative Templates\Windows Components\Windows PowerShell" 的设置 "Turn on Script Execution"。两种配置的设置都将 "Execution Policy" 设置为 "Allow all scripts"。

  3. 我已经尝试在本地包管理器控制台中将 "Process" 范围设置为 "Bypass" 和 "Unrestricted",然后手动加载 Entity Framework init.ps1 脚本。我收到同样的错误。

  4. 我还尝试修改 PowerShell 的注册表项以在几个地方将 ExecutionPolicy 设置为 "Unrestricted"。这些地方位于:
    • HKLM\Software\Microsoft\PowerShell\ShellIds\Microsoft.PowerShell
    • HKLM\Software\Microsoft\PowerShell\ShellIds\Microsoft.SqlServer.Management.PowerShell.sqlps120
    • HKLM\Software\Microsoft\PowerShell\ShellIds\Microsoft.SqlServer.Management.PowerShell.sqlps140
  5. 我在执行上述所有操作之间重启了多次。

当我 运行 命令 "Get-ExecutionPolicy -List" 时,这是我的结果

Scope         ExecutionPolicy
----- -----------------------
MachinePolicy       Undefined
UserPolicy       Unrestricted
Process             Undefined
CurrentUser      Unrestricted
LocalMachine     Unrestricted

完成上述所有操作后,我希望能够正常加载 Visual Studio,启动程序包管理器控制台,并且在尝试 运行 Entity Framework 时不会收到任何错误] init.ps1 脚本。我一定是遗漏了什么或做错了什么。我需要做什么才能让 Visual Studio 按预期工作?

更多信息是这是一台加入公司域的计算机,但其他开发人员没有这个问题。没有管理员设置的组策略正在逐渐阻止我 运行ning 脚本。

尝试降级到 EF 6.1.2。

我运行遇到了和你一样的问题。我尝试更改 Group Execution Policies,但在我的例子中这不起作用,因为我的本地机器上有一些限制(可能由我的学校管理员设置)。在另一个项目中,我使用了 6.1.2,迁移之类的东西没有问题。

发生此错误的原因可能是 Microsoft 的证书无效。检查控制面板 => Internet 选项 => 内容 => 不受信任的发布者选项卡上的证书。从此列表中删除 Microsoft Corporation。

听起来很奇怪,但对我有用。

感谢https://github.com/NuGet/Home/issues/7158

删除里面的文件

控制=>互联网选项=>内容=>证书=>不受信任的发布者

那么问题就解决了