停止在MSBuild发布运行时发布SSDT

问题描述 投票:0回答:1

我有一个ClickOnce项目,我正在DevOps上发布。我已将DevOorm解决方案在DevOps中的构建阶段的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”的值

据推测它失败了,因为SSDT的构建参数中没有指定发布配置文件。

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

关于到目前为止我尝试解决这个问题的注意事项,其中没有一个有效:

  • 阅读MSBuild官方文档qazxsw poi和qazxsw poi中的-target开关。
  • 查看.csproj文件中的代码以尝试识别“发布”部分 - 认为发布也必须调用Build。
  • 在VS中的解决方案配置中解除对SSDT的部署
  • 在SSDT的.csproj文件中的Release和Deployment配置中添加False条目,并将Debug配置设置为false(in the MSBuild command-line reference
  • 将MSBuild设置为仅使用DevOps上的MS Build参数发布一个项目(MSBuild targets section
  • 根据此as per this question,考虑使用Mage.exe将ClickOnce发布到一个完全独立的阶段
  • 试图创建一个实际上不发布的发布配置文件,以便发布阶段可以完成(as per this answer以及Walkthrough: Manually deploy a ClickOnce application
msbuild azure-devops sql-server-data-tools dacpac
1个回答
0
投票

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

然后我在DevOps上使用了两个独立的VS Build阶段,只有WinForms阶段仍然设置了was looking at this question for ideas on that

official documentation for SqlPackage.exe,但是仍然想知道在目标设置为Publish时是否有可能告诉MSBuild不构建SSDT的答案?

© www.soinside.com 2019 - 2024. All rights reserved.