我使用 Entity Framework 4.3 数据库迁移创建了一个新应用程序。使用“update-database”命令,从包管理器控制台中迁移工作得很好。
现在我想在每次使用 Team City 构建应用程序时运行数据库迁移,看起来我需要创建一个 powershell 脚本来执行此操作。
谁能告诉我一些关于如何让包管理器命令从命令行或 powershell 运行的说明?我只能找到有关如何通过包管理器控制台执行此操作的说明,我不知道如何从 Team City 构建步骤运行。
我使用 Entity Framework 4.3 数据库迁移创建了一个新应用程序。使用“update-database”命令,从包管理器控制台中迁移工作得很好。
现在我想在每次使用 Team City 构建应用程序时运行数据库迁移,看起来我需要创建一个 powershell 脚本来执行此操作。
谁能告诉我一些关于如何让包管理器命令从命令行或 powershell 运行的说明?我只能找到有关如何通过包管理器控制台执行此操作的说明,我不知道如何从 Team City 构建步骤运行。
migrate.exe 是我一直在寻找的,它位于“packages\EntityFramework.4.3.1\tools”中。
使用以下命令在 Team City 中添加新的构建步骤:
运行器类型:命令行
命令可执行文件:packages\EntityFramework.4.3.1\tools\migrate.exe
命令参数:MyApplicationName /StartupDirectory:MyApplicationName\bin
将 Entity Framework nuget 安装到 repo 并使用 packages\EntityFramework.5.0.0\tools\ 下随附的 migrate.exe 或等效项。
然后像这样运行批处理脚本:
SET AssemblyName=MyMvc4App
SET StartUpDirectory=MyMvc4App\bin\
SET ConnectionString=Server=tcp:XXXX.database.windows.net,1433;Database=XXXX;User ID=XXXX;Password=XXXX;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True
SET ConnectionStringProvider=System.Data.SqlClient
SET ConfigFilePath=%CD%\MyMvc4App\web.config
SET MigrateExe=packages\EntityFramework.5.0.0\tools\migrate.exe
%MigrateExe% %AssemblyName%.dll /startUpDirectory:%StartUpDirectory% /startUpConfigurationFile:"%ConfigFilePath%" /connectionProviderName:"%ConnectionStringProvider%" /connectionString:"%ConnectionString%" /verbose
pause
我回答了一个类似的问题,在那里我解释了为什么在没有指定 web/app.config 文件的情况下我还没有让它工作。