2012-06-06 3 views
1

Для фонового контекста мы используем первый код EF 4.3.1 и миграции в приложении MVC 3. Раньше мы делали dev и развертывали развертывания вручную, но теперь мы пытаемся автоматизировать процесс для создания dev и промежуточной сборки с использованием MSBUILD Tasks и TFS в качестве источника управления.Как автоматизировать сценарий миграции сценариев первой скрипты EF 4.3 с использованием задачи MSBuild

Мои вопросы касаются вышеуказанного контекста, как мы можем сгенерировать сценарий миграции sql, используя команды EF-миграции powershell «Update-Database -verbose-script» в задачах MSBUILD.

Есть ли способ использовать собственные команды миграции EF 4.3.1 в задаче MSBUILD для автоматизации генерации дифференциальных sql-скриптов?

Заранее благодарим за входные данные.

+1

Что случилось с использованием PowerShell с MSBuild? – tzerb

+0

Я согласен с @tzerb. MSBuild - это просто декларативный механизм документооборота. Вы можете обратиться к любому инструменту, который вам нужен. –

+0

@tzerb, у нас уже есть проекты сборки для сред dev/staging/production, и мы можем выполнить пакетный файл, чтобы начать сборку, которая работает нормально. то, что мне нужно, - это как использовать команды powershell для переноса EF в файле проекта msbuild, чтобы генерировать сценарии с помощью проекта 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 для выполнения некоторой несвязанной команды. Как это сделать, чтобы вызвать команду миграции базы данных Update-Database? –

0

Вот рабочая версия задачи MSBuild. Он копирует файл migrate.exe из папки инструментов EF 6 в каталог сборки. Для того, чтобы это работало, все пути абсолютны.

<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>