我有一个visual studio 2017解决方案,由2个SSDT项目组成-一个是我正在处理的主要项目,一个是包含链接对象的项目,主要项目需要“数据库引用”来编译。
当我右键单击并发布主项目时,Visual Studio仅将主项目正确发布到目标服务器。
但是,当我在CI服务器(TeamCity)上运行MSBuild任务时,我可以看到MSBuild正在尝试发布
引用的
使用发布的项目(我不希望)。的xml
主要的
项目(这没有任何意义!)。
如何让MSBuild只发布我关心的数据库?
命令行是:
msbuild.exe /t:Publish /p:SqlPublishProfilePath="MYDB.DROPANDCREATE.publish.xml"
MYDB。DROPANDCREATE。出版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\u Generated\u Build;发布(1m:05秒)
[13:42:00][MySln.sln.teamcity]teamcity\u生成的\u构建(1m:05秒)
[13:42:01][TeamCity\u Generated\u Build]MSBuild(1m:04s)
[13:42:02][MSBuild]MySln。sln:构建目标:重建;发布(1m:03s)
[13:42:02][MySln.sln]验证解决方案配置
[13:42:02][MySln.sln]重建(49秒)
[13:42:02][重建]MSBuild(49s)
[13:42:03][MSBuild]MyDb\MyDb。sqlproj:构建目标:重建(48s)
[13:42:52][MySln.sln]发布(14秒)
[13:42:52][发布]MSBuild(14s)
[13:42:52][MSBuild]MyDb\MyDb。sqlproj:构建目标:发布(13s)
[13:42:52][MyDb\MyDb.sqlproj]SqlPublish(13s)
[13:42:52][SqlPublish]SqlPublishTask(13s)
[13:43:03][SqlPublishTask]部署脚本生成到:
C: \ BuildAgent\work\6BBA3047716A590\MyDb\bin\Release\MyDb。出版sql
[13:43:03][SqlPublishTask]正在创建MYDB。。。
[13:43:06][SqlPublishTask]数据库更新的事务部分成功。
[13:43:06][SqlPublishTask]更新完成。
[13:43:06][MSBuild]ReferencedDb\ReferencedDb。sqlproj:生成目标:发布
[13:43:06][ReferenceDB\ReferenceDB.sqlproj]SqlPublish
[13:43:06][SqlPublish]SqlPublishTask
[13:43:06][SqlPublishTask]C:\BuildAgent\work\6BBA3047716A590\ReferenceDB\bin\Release\ReferenceDB。出版sql错误Deploy72002:源文件“C:\BuildAgent\work\6BBA3047716A590\ReferenceDB\MYDB”。DROPANDCREATE。出版无法打开xml('系统找不到指定的文件')。