【发布时间】:2018-01-26 14:29:05
【问题描述】:
我有一个由 2 个 SSDT 项目组成的 Visual Studio 2017 解决方案 - 一个是我正在处理的主要项目,一个是包含链接对象的项目,主项目需要“数据库引用”才能编译。
当我在主项目上右键单击并发布时,Visual Studio 正确地将主项目发布到目标服务器。
但是,当我在 CI 服务器 (TeamCity) 上运行 MSBuild 任务时,我可以看到 MSBUILD 正在尝试使用发布来发布 引用 项目(我不想要)。 main 项目的 xml(这没有任何意义!)。
如何让 MSBuild 只发布我关心的数据库?
命令行是:
msbuild.exe /t:Publish /p:SqlPublishProfilePath="MYDB.DROPANDCREATE.publish.xml"
MYDB.DROPANDCREATE.publish.xml 看起来像这样 - 它通过 SqlCmd 变量“暗示”引用的数据库。但这肯定还不足以让 MSBuild 决定发布它吗?
那么,让 msbuild 发布 MYDB 并停止尝试的正确命令行是什么
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludeCompositeObjects>True</IncludeCompositeObjects>
<TargetDatabaseName>MYDB</TargetDatabaseName>
<DeployScriptFileName>MYDB.sql</DeployScriptFileName>
<TargetConnectionString>Data Source=MYSERVER;Integrated Security=True;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True</TargetConnectionString>
<BlockOnPossibleDataLoss>False</BlockOnPossibleDataLoss>
<CreateNewDatabase>True</CreateNewDatabase>
<IncludeTransactionalScripts>True</IncludeTransactionalScripts>
<ProfileVersionNumber>1</ProfileVersionNumber>
<DeployDatabaseInSingleUserMode>True</DeployDatabaseInSingleUserMode>
</PropertyGroup>
<ItemGroup>
<SqlCmdVariable Include="ReferencedDbVariableName">
<Value>REFERENCEDDBNAME</Value>
</SqlCmdVariable>
<SqlCmdVariable Include="ReferecedServerVariableName">
<Value>REFERENCESERVERNAME</Value>
</SqlCmdVariable>
</ItemGroup>
</Project>
TeamCity 日志:
[13:42:00][步骤 2/2] MySln.sln.teamcity:构建目标:TeamCity_Generated_Build;Publish (1m:05s)
[13:42:00][MySln.sln.teamcity] TeamCity_Generated_Build (1m:05s)
[13:42:01][TeamCity_Generated_Build] MSBuild (1m:04s)
[13:42:02][MSBuild] MySln.sln:构建目标:Rebuild;Publish (1m:03s)
[13:42:02][MySln.sln] ValidateSolutionConfiguration
[13:42:02][MySln.sln] 重建 (49s)
[13:42:02][重建] MSBuild (49s)
[13:42:03][MSBuild] MyDb\MyDb.sqlproj:构建目标:重建(48 秒)
[13:42:52][MySln.sln] 发布(14 秒)
[13:42:52][发布] MSBuild (14s)
[13:42:52][MSBuild] MyDb\MyDb.sqlproj:构建目标:发布(13 秒)
[13:42:52][MyDb\MyDb.sqlproj] SqlPublish (13s)
[13:42:52][SqlPublish] SqlPublishTask (13s)
[13:43:03][SqlPublishTask] 部署脚本生成到: C:\BuildAgent\work\6bba30477716a590\MyDb\bin\Release\MyDb.publish.sql
[13:43:03][SqlPublishTask] 创建 MYDB...
[13:43:06][SqlPublishTask] 数据库更新的事务部分成功。
[13:43:06][SqlPublishTask] 更新完成。
[13:43:06][MSBuild] ReferencedDb\ReferencedDb.sqlproj:构建目标:发布
[13:43:06][ReferencedDb\ReferencedDb.sqlproj] SqlPublish
[13:43:06][SqlPublish] SqlPublishTask
[13:43:06][SqlPublishTask] C:\BuildAgent\work\6bba30477716a590\ReferencedDb\bin\Release\ReferencedDb.publish.sql 错误 Deploy72002: 源文件 'C:\BuildAgent\work\6bba30477716a590\ReferencedDb \MYDB.DROPANDCREATE.publish.xml' 无法打开('系统找不到指定的文件。')。
【问题讨论】:
标签: msbuild sql-server-data-tools