MSBuild SqlPublishTask 不是 运行 预部署脚本?
MSBuild SqlPublishTask not running pre-deploy script?
我在 Visual Studio 2015 年有一个 SQL Server Database Project
。CI/CD 工具正在使用这个项目使用 msbuild
和 SqlPublishTask
和关联的发布配置文件。
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 Action
为 PreDeploy
。预构建脚本在项目中的位置是:
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-部署脚本也是如此。
我在 Visual Studio 2015 年有一个 SQL Server Database Project
。CI/CD 工具正在使用这个项目使用 msbuild
和 SqlPublishTask
和关联的发布配置文件。
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 Action
为 PreDeploy
。预构建脚本在项目中的位置是:
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-部署脚本也是如此。