无论如何在Visual Studio外部打开NuGet程序包管理器控制台?
我的目标是运行一些我使用EntityFramework.Migrations
创建的迁移基本上我想在没有visual studio的环境中运行Update-Database –Verbose
命令,但确实有PowerShell 2.0和NuGet命令行工具。
答案 0 :(得分:11)
当时发布的原始答案是正确的,但现在(截至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
答案 1 :(得分:7)
migrate.exe信息的链接已过时。由于这篇文章对我有帮助,这是其他人偶然发现的最新消息:
http://msdn.microsoft.com/en-us/data/jj618307.aspx
摘要:本文为您提供有关安装migrate.exe并使用命令行参数执行迁移方案的说明。此外,还确定了常见问题。底线用nuget安装EF并浏览到包的tools文件夹以找到exe。
答案 2 :(得分:2)
这是一个PowerShell函数,它使用EF x.x.x在普通的PowerShell窗口中与Package Manager控制台中的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.config
或web.config
文件的名称。相当于在程序包管理器控制台中使用-StartupProjectName
。
答案 3 :(得分:1)
如果您查看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集成体验。我们还计划提供一个命令 用于代码优先迁移的行工具和MSDeploy提供程序。
答案 4 :(得分:0)
从今天开始,您可以使用dotnet ef
命令来使用所有代码优先命令迁移
示例:
Update-Database
-> dotnet ef database update
Add-Migration AddProductReviews
-> dotnet ef migrations add AddProductReviews
Remove-Migration
-> dotnet ef migrations remove