1

我有一个 ASP.NET MVC4 应用程序,我正在使用托管的 Team Foundation Service 来自动构建并部署到 Azure 网站。

除了部署数据库更改之外,这非常有用。

我正在使用 Fluent Migrator 来指定对数据库的更改,目前我有一个 IDatabaseInitializer 的自定义实现,因此当我的实体框架上下文启动时,它会根据需要进行任何迁移。显然,这使得数据库迁移直到应用程序“首次运行”,而不是构建和部署。

我想要做的是让构建在部署到 azure 之前尝试迁移(因此如果迁移出现问题,则构建失败)。

托管构建服务可以做到这一点吗?我可以像使用自托管的内部 TFS 一样添加构建后步骤吗?

4

1 回答 1

2

将以下内容添加到您的 .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>

还要确保在 Build 目标之后添加目标,如下所示:

<Project ToolsVersion="4.0" DefaultTargets="Build;Migrate;Test" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

您可能已经注意到我从项目目录中加载了 msbuild 任务。我将FluentMigrator.MSBuild.dll 和 FluentMigrator.Runner.dll程序集复制到我的项目文件夹中。当我尝试从包文件夹加载程序集时,我收到一条错误消息,指出程序集的格式不正确......

于 2013-08-22T06:59:46.803 回答