Msbuild 为什么SQL Server 2014数据库项目的SqlPublish目标失败?

Msbuild 为什么SQL Server 2014数据库项目的SqlPublish目标失败?,msbuild,sql-server-data-tools,sql-server-2014,Msbuild,Sql Server Data Tools,Sql Server 2014,我的机器具有当前(2014年3月)版本的SSDT、Visual Studio 2012 Professional和SQL Server 2014 Developer。我有一个针对SQL Server 2014的SQL Server项目(我们称之为MyProject.sqlproj)。我尝试了以下几点: MsBuild.exe MyProject.sqlproj /t:SqlPublish /p:SqlPublishProfilePath=Somewhere.publis

我的机器具有当前(2014年3月)版本的SSDT、Visual Studio 2012 Professional和SQL Server 2014 Developer。我有一个针对SQL Server 2014的SQL Server项目(我们称之为
MyProject.sqlproj
)。我尝试了以下几点:

MsBuild.exe MyProject.sqlproj 
            /t:SqlPublish /p:SqlPublishProfilePath=Somewhere.publish.xml
此操作失败,出现以下错误:

部署错误部署72002:内部错误。
类型为的数据库平台服务 Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider不可用 有效。您必须确保服务已加载,或者必须提供 有效数据库平台服务的完整类型名称

如果我将此项目切换到目标2012(并指向一个2012实例),则该命令将成功运行。我之前问过一个可能相关的问题,那里的答案解决了我的问题,但这不是这里的问题——如果我直接使用
sqlpack.exe
,我就能够成功发布这个2014年的DACPAC


发生了什么,我如何修复它?

这里的问题是没有设置VisualStudioVersion环境变量,在这种情况下,.sqlproj文件当前默认为针对VS2010版本(不支持SQL Server 2014)。在运行MSBuild之前调用“set-VisualStudioVersion=11.0”将解决此问题。

您是从VS2012开发人员命令提示符下运行MSBuild,还是从常规命令提示符下运行MSBuild/其他环境?您的机器上是否安装了VS2010?最可能的原因是未设置VisualStudioVersion环境变量,在这种情况下,.sqlproj文件当前默认为以VS2010版本为目标。在运行MSBuild之前,尝试调用“set-VisualStudioVersion=11.0”,看看这是否解决了问题。啊哈!是的,我确实安装了VS2010,并且在常规命令提示符下运行它。在执行之前调用“set-VisualStudioVersion=11.0”有效!太好了,问题解决了:)谢谢@kevincunne——如果你想添加这个作为答案,我很乐意接受。我想我也有同样的问题,我在本地使用SQL Server 2012 Express,在远程使用SQL Server 2008。我正在开发并试图发布Asp.NETMVC5项目。当我使用VS2013时,一切都很好。升级到VS2015后,我开始出现同样的错误。在哪里可以更改VisualStudioVersion环境?在哪里可以设置
VisualStudioVersion
变量,而不是在运行MSBuild之前在命令行中进行设置?