【发布时间】:2019-02-23 16:59:22
【问题描述】:
我有一个在 DevOps 上发布的 ClickOnce 项目。我已将 DevOps 中 WinForm 解决方案构建阶段的 MSBuild Arguments 属性设置为 /target:Publish 以触发所有 ClickOnce 文件的创建:
但是,该解决方案还包含一个 SSDT 项目,并且添加 /target:Publish 设置似乎会导致构建过程也尝试发布 SSDT。然后失败并出现错误:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(1808,5): 错误 MSB4044:“SqlPublishTask”任务没有为 必需参数“SqlPublishProfilePath”
可能它失败了,因为没有在构建参数中指定供 SSDT 使用的发布配置文件。
我不希望 MSBuild 将 DacPac 发布到服务器,我只希望它创建 DacPac。如何阻止 /target:Publish 触发 SSDT 发布,是否可以添加另一个构建参数来阻止这种情况发生?
关于我迄今为止尝试解决此问题的方法的说明,但均未奏效:
- 阅读 MS Build 官方文档 in the MSBuild command-line reference 和 MSBuild targets section 中的 -target 开关。
- 查看 .csproj 文件中的代码以尝试识别“发布”部分 - 认为 Publish 还必须调用 Build。
- 在 VS 的解决方案配置中为 SSDT 取消勾选部署
- 在 SSDT 的 .csproj 文件的发布和部署配置中添加 False 条目,并将调试配置设置为 false (as per this question)
- 将 MSBuild 设置为仅使用 DevOps 上的 MS Build 参数发布一个项目 (as per this answer)
- 考虑按照Walkthrough: Manually deploy a ClickOnce application 使用 Mage.exe 将 ClickOnce 发布拉到一个完全独立的阶段
- 试图创建一个实际上不发布的发布配置文件,以便发布阶段可以完成(was looking at this question for ideas on that 以及official documentation for SqlPackage.exe)
【问题讨论】:
标签: msbuild azure-devops sql-server-data-tools dacpac