目标是使用数据库项目上下文菜单中的“发布”菜单选项(通过右键单击数据库)从 Visual Studio 2012 用户界面中成功发布数据库项目后连接要运行的目标或命令(例如任意可执行文件)解决方案资源管理器中的项目并选择发布)。我们有一个现有的自定义数据加载程序,可以从 XML 文件(从主数据库转储)批量加载数据,继续使用这种现有方法将非常方便。我们不能使用部署后的 SQL 文件来加载数据,因为加载时间太长并且难以维护(手动)。我们正在加载的数据是应用程序需要的大量配置数据,而不是应用程序的事务数据(更大)。
我们目前正在使用 Microsoft Visual Studio Ultimate 2012、11.0.60610.01 Update 3 和 SQL Server Data Tools 11.1.30618.1。数据库项目是使用 VS2012 (.sqlproj) 中的数据库项目模板创建的。我们同时发布到 SQL Server 2008 R2 和 SQL Server 2012。我们知道 sqlproj 文件中包含的 SSDT MSBuild 目标文件及其内容。VS2012 在“发布”命令期间似乎没有执行此文件中定义的部署或发布目标。然而,构建目标是在从 VS2012 中构建项目时执行的。
到目前为止,这是我们尝试过的但没有成功的方法(下面的每个项目都是一次单独尝试的):
- 将可执行命令连接到 PostPublishEvent(类似于 PostBuildEvent)。
- 将可执行命令连接到 PostDeployEvent(类似于 PostBuildEvent)。
- 连接一个新的自定义目标,该目标依赖于执行命令的 AfterPublish 目标。
- 连接一个新的自定义目标,该目标依赖于执行命令的 AfterDeploy 目标。
- 覆盖 sqlproj 文件中的 AfterPublish 目标。
- 覆盖 sqlproj 文件中的 AfterDeploy 目标。
- 覆盖 sqlproj 文件中的 SqlPublish 目标。
如果我使用上述任何“发布”方法并使用 MSBuild 执行发布目标,一切都会按预期工作。如果我在 VS2012 中使用“发布”用户界面命令,则永远不会执行自定义命令。如果我将自定义命令连接到 PostBuildEvent,它将通过 MSBuild 和 VS2012 运行。
似乎 VS2012 正在使用不同的方式来发布数据库项目,并且除了 Build 目标之外没有连接到 SSDT MSBuild 目标。
有没有一种干净的方法来连接在从 VS2012 用户界面调用的“发布”命令之后执行的任意命令,理想情况下,成功完成?
我也知道这篇文章,使用 SSDT 发布数据?,但相对于 VS2012 之前使用的现有方法,这不是可接受的方法。
谢谢!