与Deploy
一起在SSDT项目中有两个不同的目标Publish
和Build
,但我找不到任何关于它们之间的区别以及应该使用哪个目标的内容。 ?从我收集的内容.dbproj
过去常常使用Deploy
,但.sqlproj
据说用Publish
替换它,为什么它仍然在那里以及它仍用于什么?
$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets
<UsingTask TaskName="SqlBuildTask" AssemblyFile="$(SqlServerRedistPath)\Microsoft.Data.Tools.Schema.Tasks.Sql.12.dll" />
<UsingTask TaskName="SqlDeployTask" AssemblyFile="$(SqlServerRedistPath)\Microsoft.Data.Tools.Schema.Tasks.Sql.12.dll" />
<UsingTask TaskName="SqlPublishTask" AssemblyFile="$(SqlServerRedistPath)\Microsoft.Data.Tools.Schema.Tasks.Sql.12.dll" />
<DeployDependsOn>
BeforeDeploy;
PreDeployEvent;
SqlDeploy;
PostDeployEvent;
AfterDeploy
</DeployDependsOn>
<Target Name="Deploy" DependsOnTargets="$(DeployDependsOn)">
<PublishDependsOn>
BeforePublish;
PrePublishEvent;
SqlPublish;
PostPublishEvent;
AfterPublish
</PublishDependsOn>
<Target Name="Publish" DependsOnTargets="$(PublishDependsOn)">
答案 0 :(得分:3)
主要区别在于,当您拥有描述连接信息的发布配置文件时使用Publish,而当您没有此文件/不希望使用Deploy时使用Deploy。两者都由SSDT使用,部署任务不仅仅是为了向后兼容。
“发布”任务接受“PublishProfile”属性,该属性指定已保存的发布配置文件xml文件。从该文件中读取所需的服务器名称,数据库名称和所需的其他属性。有关更多信息,请参阅this forum post。
当您没有发布配置文件时,将使用部署任务(例如,如果我没记错的话,F5调试部署会使用此部署)。我认为这需要明确设置服务器,数据库名称和其他属性。
答案 1 :(得分:-1)
我认为这是为了向后兼容。在安装SSDT更新后将SQL2008 dbproj升级到SQL2012 sqlproj,您可能仍希望dbproject在转换之前正常运行。