MSBuild SqlPublishTask 不是 运行 预部署脚本?

MSBuild SqlPublishTask not running pre-deploy script?

我在 Visual Studio 2015 年有一个 SQL Server Database Project。CI/CD 工具正在使用这个项目使用 msbuildSqlPublishTask 和关联的发布配置文件。

msbuild 命令类似于:

"C:\Program Files (x86)\MSBuild.0\Bin\msbuild.exe" "c:\pathto\MySqlProj\MySql.sqlproj" /t:Publish /p:SqlPublishProfilePath="c:\pathto\MySqlProj\MyProfile.publish.xml" /p:UpdateDatabase=True /p:PublishScriptFileName="MySqlProj.ssdt-artefact.sql" /m /nr:false 

已成功发布任何与架构相关的更改。

但是,预构建 sql 脚本不是 运行。我可以看到这一点,因为应该由预构建脚本删除的旧数据没有。我还单独测试了预构建脚本,它工作正常。

我已经检查过,预构建脚本的 Build ActionPreDeploy。预构建脚本在项目中的位置是:

c:\pathto\MySqlProj\Scripts\Pre-Deploy\Script.PreDeployment.sql

知道为什么预部署脚本不是 运行ning 吗?

设法解决了这个问题。从实验来看,即使预部署脚本是使用 Pre-Deployment Script 模板创建的,它也不会将该文件标记为预部署脚本。

相反,MSBuild 似乎在文件开头寻找特定的注释部分以确定它是否是预部署脚本:

/*
 Pre-Deployment Script Template                         
--------------------------------------------------------------------------------------
 This file contains SQL statements that will be executed before the build script.   
 Use SQLCMD syntax to include a file in the pre-deployment script.          
 Example:      :r .\myfile.sql                              
 Use SQLCMD syntax to reference a variable in the pre-deployment script.        
 Example:      :setvar TableName MyTable                            
               SELECT * FROM [$(TableName)]                 
--------------------------------------------------------------------------------------
*/

就我而言,这些评论已被删除。将它们添加回去导致脚本为 运行。 post-部署脚本也是如此。