我有一个 ASP.NET MVC4 应用程序,我正在使用托管的 Team Foundation Service 来自动构建并部署到 Azure 网站。
除了部署数据库更改之外,这非常有效。
我正在使用 Fluent Migrator 来指定对数据库的更改,目前我有一个 IDatabaseInitializer 的自定义实现,以便当我的 Entity Framework 上下文启动时,它会根据需要进行任何迁移。显然,这会将数据库迁移保留到应用程序的“首次运行”,而不是构建和部署。
我希望能够做的是让构建在部署到 azure 之前尝试迁移(因此,如果迁移出现问题,构建会失败)。
这可以通过托管构建服务实现吗?我可以像使用自托管内部 TFS 一样添加构建后步骤吗?
最佳答案
将以下内容添加到您的 .csproj 文件中:
<UsingTask TaskName="FluentMigrator.MSBuild.Migrate" AssemblyFile="$(MSBuildProjectDirectory)\FluentMigrator.MSBuild.dll" />
<Target Name="Migrate">
<Message Text="Migrating database" />
<Migrate Database="sqlserver" Connection="YOUR CONNECTION STRING" Target="$(IntermediateOutputPath)YOUR DLL NAME.dll">
</Migrate>
</Target>
还要确保在构建目标之后添加目标,如下所示:
<Project ToolsVersion="4.0" DefaultTargets="Build;Migrate;Test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
您可能已经注意到我从项目目录加载了 msbuild 任务。我将 FluentMigrator.MSBuild.dll 和 FluentMigrator.Runner.dll 程序集复制到我的项目文件夹中。当我尝试从包文件夹加载程序集时,出现错误,指出程序集的格式不正确...
关于azure - Team Foundation Service 构建完成后添加 Fluent Migrator 迁移步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18123775/