How to run Entity Framework Migrations using MSBuild and Migrate.exe

hi,
I want to run entity framework migrations using MSBuild and migrate.exe in continua CI.

But some how i am not able to copy migrate.exe from " $Workspace$\Source\GitRepository\packages\EntityFramework.6.1.1\tools " path to $Workspace$\Output folder.

I am using below link for reference,
http://www.gitshah.com/2014/06/how-to-run-entity-framework-migrations.html

Does anyone have idea about how we can achieve this in Continua CI.

Thanks in advance.
 

Hi,

You should be able to use Copy action to copy the migration tool. Set the Source Directory to $Workspace$\Source<span style=“background: #ffffff;”>GitRepository\packages\EntityFramework.6.1.1\tools, the File Names / Patterns to *.exe and Destination Path to $Workspace$\Output. Then use an Execute Program action to run $Workspace$\Output\Migrate.exe with the name of your dll or exe as an Argument.

If you have tried this and it has not worked then first enable logging for repository rules and workspace rules and then send the build log to support@finalbuilder.com, along with details of the relevant action settings, your repository settings, the workspace and repository rules, and any errors in the event log.

hi,

thanks for your reply.

Now I am able to copy migrate.exe to output folder And also tried to run that exe using MSBUILD action but getting below error,

MSBUILD : error MSB1009: Project file does not exist. 
Switch: C:\CI_WS\Ws\177\Output\migrate.exe Migration.Data.dll  

So not sure whether its possible to pass exe file in Project File text box of MSbuild Action.

Or Is there any other way to achieve this? 

There’s a few ways to do this:

Option 1: As in my previous reply, you add three Continua actions: 

Copy action
    Source Directory: $Workspace$\Source\GitRepository\packages\EntityFramework.6.1.1\tools
    File Names / Patterns: *.exe
    Destination Path: $Workspace$\Output
MSBuild action
    Project File: $Workspace$/Source/GitRepository/Migration.Data.csproj
    Output Path: $Workspace$\Output
Execute Program action
    Executable Path: $Workspace$\Output\Migrate.exe
    Working Directory: $Workspace$\Output
    Arguments: Migration.Data.dll


Option 2: .First edit your project file e.g. Migration.Data.csproj and add the following Target:

<Target Name=“Migrate”
    <exec Command="$(OutputPath)\migrate.exe Migration.Data.dll /verbose"/> 
Target>

Then add two Continua actions: 

Copy action
    Source Directory: $Workspace$\Source\GitRepository\packages\EntityFramework.6.1.1\tools
    File Names / Patterns: *.exe
    Destination Path: $Workspace$\Output
MSBuild action
    Project File: $Workspace$/Source/GitRepository/Migration.Data.csproj
Targets: build;migrate
    Output Path: $Workspace$\Output


Option3: First edit your project file e.g. Migration.Data.csproj and add the following Target:

<Target Name=“Migrate”
    <copy SourceFiles="$(MigratorToolPath)\migrate.exe" DestinationFolder="$(OutputPath)" />
    <exec Command="$(OutputPath)\migrate.exe MigrationsDemo.exe /verbose"/> 
Target>

Then add one Continua action: 
MSBuild action
    Project File: $Workspace$/Source/GitRepository/Migration.Data.csproj
    Output Path: $Workspace$\Output
Targets: build;migrate
    Properties: MigratorToolPath=$Workspace$\Source<span style=“color: #000000; background: #f8f8f8;”>GitRepository</span>packages\EntityFramework.6.1.1\tools

Thanks a lot.