无论如何在 Visual Studio 之外打开NuGet包管理器控制台?
我的目标是运行一些我使用EntityFramework.Migrations创建的迁移
基本上我想Update-Database –Verbose
在没有 Visual Studio 但有 PowerShell 2.0 和 NuGet 命令行工具的环境中运行命令。
无论如何在 Visual Studio 之外打开NuGet包管理器控制台?
我的目标是运行一些我使用EntityFramework.Migrations创建的迁移
基本上我想Update-Database –Verbose
在没有 Visual Studio 但有 PowerShell 2.0 和 NuGet 命令行工具的环境中运行命令。
最初发布的答案当时是正确的,但现在(从 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
migrate.exe 信息的链接已过时。由于这篇文章对我有所帮助,因此对于偶然发现此问题的其他人来说,这是最新的:
http://msdn.microsoft.com/en-us/data/jj618307.aspx
摘要:本文为您提供了有关安装 migrate.exe 和使用命令行参数执行迁移方案的说明。此外,还确定了常见问题。底线使用 nuget 安装 EF 并浏览到包的工具文件夹以找到 exe。
这是一个 PowerShell 函数,它update-database
在包管理器控制台中执行等效操作,从普通 PowerShell 窗口,使用 EF xxx
我从命令行使用它作为我的开发机器上“完整构建”过程的一部分;
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.config
或文件的名称。等效于在包管理器控制台中使用。web.config
-StartupProjectName
如果您查看Nuget Faq,它会说明以下内容:
我可以在 Visual Studio 之外使用 NuGet 吗?
你一定可以!正如关于 NuGet 命令行工具的问题中所讨论的,NuGet 的主要关注点是 Visual Studio,但核心 NuGet API 不依赖于 Visual Studio。有多个 NuGet 客户端完全在 Visual Studio 之外工作:
夏普开发阿尔法。(请参阅 Phil Haack 的 MvcConf 演讲中的演示。)
WebMatrix 中的 ASP.NET 网页。(请参阅 Phil Haack 的演讲中的演示。)
NuGet.exe
但是对于在 Visual Studio 之外使用代码优先迁移,发行说明如下:
没有 Visual Studio 之外的经验。Alpha 2 仅包含 Visual Studio 集成体验。我们还计划为 Code First 迁移提供命令行工具和 MSDeploy 提供程序。
截至今天,您可以使用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