【问题标题】:Using NuGet Package Manager console outside Visual Studio to run Entity Framework Migrations在 Visual Studio 之外使用 NuGet 包管理器控制台运行实体框架迁移
【发布时间】:2020-08-06 17:36:07
【问题描述】:

有没有办法在 Visual Studio 之外打开 NuGet Package Manager 控制台?

我的目标是运行一些我使用 EntityFramework.Migrations 创建的迁移

基本上我想在没有 Visual Studio 但有 PowerShell 2.0 和 NuGet 命令行工具的环境中运行 Update-Database –Verbose 命令。

【问题讨论】:

    标签: visual-studio-2010 entity-framework-4 nuget entity-framework-migrations


    【解决方案1】:

    最初发布的答案当时是正确的,但现在(从 4.3 开始)有一个 migrate.exe 所以你不需要 nuget 或 powershell:

    packages\EntityFramework.4.3.1\tools\migrate.exe
    

    http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-released.aspx

    【讨论】:

      【解决方案2】:

      migrate.exe 信息的链接已过时。由于这篇文章对我有所帮助,因此对于偶然发现此问题的其他人来说,这是最新的:

      http://msdn.microsoft.com/en-us/data/jj618307.aspx

      总结:本文为您提供了有关安装 migrate.exe 和使用命令行参数执行迁移方案的说明。此外,还确定了常见问题。使用 nuget 安装 EF 并浏览到包的工具文件夹以找到 exe。

      【讨论】:

      • 您能总结一下答案中的链接吗?
      【解决方案3】:

      这是一个 PowerShell 函数,它在包管理器控制台中使用 EF x.x.x 在普通 PowerShell 窗口中执行与 update-database 等效的操作。

      我在我的开发机器上作为“完整构建”过程的一部分从命令行使用它;

      function Update-Database($solutionDir, $projectBinDir, $assemblyName, $appConfigFile)
      {
          $efMigrateExe = "$solutionDir\packages\EntityFramework.*\tools\migrate.exe"
          Write-Host "Updating Entity Framework Database"
          Write-Host "    Migrate.exe at $efMigrateExe"
          Write-Host "    EF project binary at $projectBinDir"
          Write-Host "    EF config at $appConfigFile"
          . "$efMigrateExe" "$assemblyName" /startupConfigurationFile="$appConfigFile" /startupDirectory="$projectBinDir"
      }
      

      参数是;

      $solutionDir -- 解决方案所在的目录; packages 文件夹的父级。 $projectBinDir -- <something>\bin\debug 目录包含带有您的 DbContext 的程序集。 $assemblyName -- 汇编文件的名称,如MyEfProject.dll appConfigFile -- 包含连接字符串等的app.configweb.config 文件的名称。等效于在包管理器控制台中使用-StartupProjectName

      【讨论】:

        【解决方案4】:

        如果您查看Nuget Faq,它会说明以下内容:

        我可以在 Visual Studio 之外使用 NuGet 吗?

        你当然可以!正如所讨论的 在关于 NuGet 命令行工具的问题中,主要关注的是 NuGet 是 Visual Studio,但核心 NuGet API 不依赖于 视觉工作室。有多个 NuGet 客户端可以完全工作 在 Visual Studio 之外:

        SharpDevelop Alpha。 (请参阅 Phil Haack 的 MvcConf 演讲中的演示。)

        WebMatrix 中的 ASP.NET 网页。 (请参阅 Phil Haack 的演讲中的演示。)

        NuGet.exe

        但是对于在 Visual Studio 之外使用代码优先迁移,release notes 说以下内容:

        没有 Visual Studio 之外的经验。 Alpha 2 仅包括 Visual Studio 集成体验。我们还计划下达命令 用于 Code First 迁移的 line 工具和 MSDeploy 提供程序。

        【讨论】:

        • Nuget 命令行工具没有执行 Update-Database –Verbose 的命令 - 我的问题是如何在 Visual Studio 之外的包管理器控制台之外运行类似的 powershell 脚本!寻找类似nuget -custom "Update-Database –Verbose"的东西!
        • @Zasz:你读过答案吗?您是否阅读了该软件包的发行说明? Alpha 版本目前仅针对 VS 体验 = 不提供 VS 支持。
        • 如果您的 powershell 抱怨 Update-Package 未知,您可能需要更新您的 powershell(比如版本 5)。
        【解决方案5】:

        从今天开始,您可以使用dotnet ef 命令来使用所有代码优先命令迁移。
        需要通过dotnet tool install --global dotnet-ef安装后才能使用。

        示例:

        • Update-Database

        --> dotnet ef database update


        • Add-Migration AddProductReviews

        --> dotnet ef migrations add AddProductReviews


        • Remove-Migration

        --> dotnet ef migrations remove

        Official document can be found herethere

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-04
          • 2011-05-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多