[英]Using NuGet Package Manager console outside Visual Studio to run Entity Framework Migrations
無論如何要在 Visual Studio 之外打開NuGet包管理器控制台?
我的目標是運行一些我使用EntityFramework.Migrations創建的遷移
基本上我想在沒有 Visual Studio 但有 PowerShell 2.0 和 NuGet 命令行工具的環境中運行Update-Database –Verbose
命令。
最初發布的答案當時是正確的,但現在(從 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 之外工作:
SharpDevelop Alpha。 (請參閱 Phil Haack 的 MvcConf 演講中的演示。)
WebMatrix 中的 ASP.NET 網頁。 (請參閱 Phil Haack 的演講中的演示。)
NuGet程序
但是對於在 Visual Studio 之外使用代碼首先遷移, 發行說明如下:
沒有 Visual Studio 之外的經驗。 Alpha 2 僅包含 Visual Studio 集成體驗。 我們還計划為 Code First 遷移提供一個命令行工具和一個 MSDeploy 提供程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.