2012-06-06 53 views
1

對於後臺環境,我們在MVC 3應用程序中使用EF 4.3.1代碼優先和遷移。過去,我們手動完成了開發和分段部署,但現在我們正在嘗試使用MSBUILD Tasks和TFS作爲源代碼控制來創建開發和分段構建的自動化過程。如何使用MSBuild自動執行EF 4.3代碼優先SQL模式遷移腳本任務

我的問題與上述上下文有關,因爲我們如何使用MSBUILD任務中的EF遷移powershell命令「Update-Database -verbose -script」生成SQL遷移腳本。

有什麼辦法在MSBUILD任務中使用原生EF 4.3.1遷移命令來自動執行差分SQL腳本生成?

在此先感謝您的意見。

+1

將PowerShell與MSBuild結合使用會出現什麼問題? – tzerb

+0

我同意@tzerb。 MSBuild只是一個聲明性的工作流引擎。您可以撥打任何您需要的工具。 –

+0

@tzerb,以及我們已經爲dev/staging/production環境構建了項目,我們可以執行批處理文件來啓動正常工作的構建。我所追求的是如何在msbuild項目文件中使用EF migrations powershell命令,以便腳本生成可以由msbuild項目處理。 –

回答

0

你應該只調用的PowerShell:見Using Powershell scripts from MSBuild, Scheduled Tasks, etc

<Target Name="AfterBuild"> 
    <Exec Command="powershell.exe -command &quot;&amp; {.\Register-myscript.ps1 &apos;$(TargetPath)&apos;}&quot;" /> 
</Target> 
+0

讓我測試一下。我會就此回覆你。 –

+3

這沒有回答這個問題,它只是顯示如何調用PowerShell來執行一些不相關的命令。 這有助於如何調用更新數據庫遷移命令? –

0

這裏是MSBuild任務的工作版本。它將migrate.exe從EF 6的工具文件夾複製到build目錄中。爲了這個工作,所有的路徑都是絕對的。

<Target Name="AfterBuild"> 
<copy SourceFiles="$(SolutionDir)packages\EntityFramework.6.1.3\tools\migrate.exe" DestinationFolder="$(TargetDir)" /> 
<exec Command="$(TargetDir)migrate.exe *YourData.dll* Configuration /startUpDirectory:$(TargetDir) /startUpConfigurationFile:$(TargetDir)WebStart.NET.dll.config /verbose"/> 
</Target> 
相關問題