SSDT Publish 不使用来自 MSBuild 命令行的连接字符串

SSDT Publish does not use connection string from MSBuild command line

我正在尝试使用来自我的 (TeamCity) 构建服务器的 MSBuild 发布一个 .sqlproj 项目。我使用 .publish.xml 来设置大部分发布设置,但想在命令行上指定连接字符串,以便我可以将其安全地存储在 TeamCity 属性中。

但是,MSBuild 似乎根本不使用命令行指定的连接字符串,而是坚持使用.publish.xml 中的连接字符串。我试过将它从 XML 中删除并清空它,但 MSBuild 不太喜欢那样,然后吐回 Before you can deploy a database, you must specify a connection string in the project properties or at a command prompt.,当然,这正是我正在尝试的做...

用于发布的完整命令如下:

msbuild /t:Build;Publish /p:SqlPublishProfilePath="c:\path\to\profile.publish.xml" /p:Publish_TargetConnectionString="the connection string" "c:\path\to\project.sqlproj"

我也尝试过使用 /p:TargetConnectionString/p:SqlPublishProfilePath="c:\path\to\profile.publish.xml";Publish_TargetConnectionString="the connection string",但无济于事。

.publish.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludeCompositeObjects>True</IncludeCompositeObjects>
    <TargetDatabaseName><!-- snip --></TargetDatabaseName>
    <DeployScriptFileName><!-- snip -->.sql</DeployScriptFileName>
    <TargetConnectionString><!-- snip snip --></TargetConnectionString>
    <ScriptDatabaseOptions>False</ScriptDatabaseOptions>
    <BlockOnPossibleDataLoss>False</BlockOnPossibleDataLoss>
    <DeployDatabaseInSingleUserMode>False</DeployDatabaseInSingleUserMode>
    <ProfileVersionNumber>1</ProfileVersionNumber>
  </PropertyGroup>
</Project>

SSDT 是我今天可以从 Microsoft 下载的最新版本。

有人用过这个吗?

正如上面评论中所说,我使用 MSBuild 构建 .dacpac 并 sqlpackage.exe 将其发布到 SQL 服务器,效果很好。