MSBuild发布运行时停止发布SSDT

时间:2019-02-23 16:59:22

标签: msbuild azure-devops sql-server-data-tools dacpac

我有一个在DevOps上发布的ClickOnce项目。我已将DevOps中WinForm解决方案的构建阶段的MSBuild Arguments属性设置为/target:Publish,以触发所有ClickOnce文件的创建:

enter image description here

但是,该解决方案还包含一个SSDT项目,并且添加/target:Publish设置似乎会导致构建过程也尝试发布SSDT。然后失败并显示错误:

  

C:\ Program Files(x86)\ Microsoft Visual   Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ SSDT \ Microsoft.Data.Tools.Schema.SqlTask​​s.targets(1808,5):   错误MSB4044:未为“ SqlPublishTask”任务提供值   必需的参数“ SqlPublishProfilePath”

大概是失败的,因为在build参数中没有指定要供SSDT使用的发布配置文件。

我不希望MSBuild将DacPac发布到服务器,我只希望它创建DacPac。如何停止/target:Publish触发SSDT发布,是否可以添加另一个构建参数来阻止这种情况发生?

关于到目前为止我为解决该问题所做的尝试的注释,但没有一个起作用:

1 个答案:

答案 0 :(得分:0)

最终,我以完全不同的方式解决了上述问题。我没有让MSBuild做我想要的事情,而是将解决方案配置分为两部分,一个阶段用于数据库,一个阶段用于不带数据库的WinForms项目。

然后我在DevOps上使用了两个单独的VS Build阶段,只有WinForms阶段仍设置了/target:Publish

I've written that up here,但仍然想知道答案,当目标设置为“发布”时,是否可以告诉MSBuild不构建SSDT?