首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MSBuild SqlPublishTask没有运行预部署脚本吗?

MSBuild SqlPublishTask没有运行预部署脚本吗?
EN

Stack Overflow用户
提问于 2015-11-27 16:26:16
回答 1查看 528关注 0票数 0

我在Visual 2015中有一个SQL Server Database Project。CI/CD工具正在使用这个项目来使用带有msbuild和相关发布配置文件的SqlPublishTask将目标数据库发布到目标数据库。

msbuild命令看起来类似于:

代码语言:javascript
运行
复制
"C:\Program Files (x86)\MSBuild\14.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 of PreDeploy。项目中预构建脚本的位置是:

代码语言:javascript
运行
复制
c:\pathto\MySqlProj\Scripts\Pre-Deploy\Script.PreDeployment.sql

知道为什么预部署脚本没有运行吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-02 13:59:32

设法解决了这个问题。从实验来看,尽管使用Pre-Deployment Script模板创建了部署前脚本,但这并不是将文件标记为部署前脚本。

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

代码语言:javascript
运行
复制
/*
 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)]                 
--------------------------------------------------------------------------------------
*/

就我而言,这些评论已被删除。将它们添加回,就会运行脚本。部署后脚本也是如此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33961431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档