【问题标题】:ssdt msbuild parameter overriding default valuessdt msbuild 参数覆盖默认值
【发布时间】:2014-06-11 03:54:07
【问题描述】:

我正在尝试将来自 Team Foundation Built 的参数值传递到 SSDT 项目的 SQL 脚本中。 我在项目中添加了一个参数:$(PublishVersion) 在 SQL 脚本中使用它时,我在创建的脚本中得到结果值 $(SqlCmdVar__1) ..

Sqlproj 文件: ... $(SqlCmdVar__1)

MSBuild 参数(两种不同的尝试):

/p:MSBuildMultiProc=false /t:Build /t:Publish /p:PublishVersion=123

/p:MSBuildMultiProc=false /t:Build /t:Publish /p:SqlCmdVar__1=456

编辑:我通过编辑 xaml 然后使用 XmlPoke 让它工作。如果有兴趣,我可以发布更多详细信息。

【问题讨论】:

    标签: msbuild tfsbuild sql-server-data-tools


    【解决方案1】:

    我对此进行了研究,目前唯一受支持的在发布期间加载 SQLCMD 变量的方法是将它们保存在发布配置文件 (.publish.xml) 中。在团队基础构建服务器上,使用 /p:SqlPublishProfilePath 参数指定相关配置文件的路径。

    或者,如果您使用 Deploy 任务,您应该能够使用 /p:SqlCmdVariable=123 属性指定 SQLCMD 变量(我相信这应该有效,但需要验证)。缺点是您需要指定发布任务不需要的额外属性,例如连接字符串。请注意,您可以通过检查 MSBuild 文件夹中的 Microsoft.Data.Tools.Schema.SqlTask​​s.targets 文件来了解每个任务的设置方式。这就是定义传递给每个任务的属性的原因。

    最后,发布配置文件中的大多数其他变量都可以通过命令行覆盖,因此支持 SQLCMD 变量是合法的请求。我建议在https://connect.microsoft.com/SQLServer/feedback/CreateFeedback.aspx 上为此问题创建一个连接错误,并使用“开发人员工具(SSDT、BIDS 等)”类别。这至少会引起产品团队的注意。

    【讨论】:

    • 谢谢,我不熟悉 Deploy 任务,会研究一下。但我也认为应该可以使用 /p 参数指定一个值..
    • 是的,这是对当前功能的疏忽,特别是因为它在通过 SqlPackage.exe 发布时受支持。正如我所提到的,提出此问题的最佳方法是通过连接错误系统,以便您可以查看错误是否得到修复,并将其识别为客户遇到的阻塞问题。
    【解决方案2】:

    Lonny.Bastien (MSFT) 有 provided an answer:使用 /t:Deploy 而不是 /t:Publish。这使用项目本身的内置部署操作。您必须编辑项目属性/SQLCMD 变量以使用间接值(例如,请参见上面的链接)。此任务不采用发布配置,因此您必须提供所有参数。例如,SQLCMD 覆盖:

    <ItemGroup>
    <SqlCmdVariable Include="BuildId">
      <DefaultValue>
      </DefaultValue>
      <Value>$(SqlCmdVar__1)</Value>
    </SqlCmdVariable>
    

    ...和 ​​msbuild 参数:

    /t:Deploy /p:SqlCmdVar__1=BLDNUMBER  /p:TargetConnectionString="Data Source=SOMESERVER;Integrated Security=True;" /p:TargetDatabaseName=PUBLISH_DBNAME
    

    【讨论】:

      【解决方案3】:

      尝试使用 /Variables:PublishVersion=123

      【讨论】:

      • 我认为这可能仅在您使用 SqlPackage.exe 时才有效,而不是发布任务。这是一个很好的建议,并且可能比尝试使用发布任务更容易做到。
      • 谢谢你的建议,我已经试过了,凯文是对的,它不起作用。
      猜你喜欢
      • 1970-01-01
      • 2015-12-20
      • 2011-12-20
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      相关资源
      最近更新 更多