如何在VS2010和VS2012中加载数据库项目?

5

我最近从VS2010切换到VS2012,打开一个数据库项目时出现以下错误:

C:\Trunk\Database\Database.dbproj : error  : Internal Error. The database platform service with type Microsoft.Data.Schema.Sql.Sql100DatabaseSchemaProvider is not valid. You must make sure the service is loaded, or you must provide the full type name of a valid database platform service.

我猜测项目文件中可能是以下这行引起了问题。
    <DSP>Microsoft.Data.Schema.Sql.Sql100DatabaseSchemaProvider</DSP>

或者可能是这个。
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" />

有什么办法可以解决这个错误,使我能够在VS2012中加载我的项目吗?
3个回答

4

显然,微软在VS2012中推出了新的Sql1110 DSP。而在VS2010中,版本为Sql1100。

要解决这个问题,在你的.dbproj文件中,修改以下行:

<ProjectVersion>4.0</ProjectVersion>
<ProjectGuid>{a233d7e8-b460-4b72-a345-aaeee4fb3aca}</ProjectGuid>
<DSP>Microsoft.Data.Schema.Sql.Sql100DatabaseSchemaProvider</DSP>
...
<!--Import the settings-->
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" />
<ItemGroup>

转换为:

<ProjectVersion>4.1</ProjectVersion>
<ProjectGuid>{6cd7e290-f844-4410-97f6-e8fd6e63c5b5}</ProjectGuid>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql110DatabaseSchemaProvider</DSP>
...
<!--Import the settings-->
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
<ItemGroup>

我在VS2012中创建了一个新的空白数据库项目文件,将.sqlproj文件与我的旧.dbproj进行比较,上面的行是主要区别。是的,微软改变了项目文件扩展名,但你不必更改旧的dbproj扩展名。它对我有用。


2

为了让其他人在VS2013上也可能遇到同样的问题,打开你的数据库项目文件.dbproj或.sqlproj:

更改:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets" />

致:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />

并且从

<ProjectVersion>4.0</ProjectVersion>

致:

<ProjectVersion>4.1</ProjectVersion>

并且来自

<DSP>Microsoft.Data.Schema.Sql.Sql100DatabaseSchemaProvider</DSP>

To:

<DSP>Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider</DSP>

2

由于我们没有完整的代码来检查,因此很难理解确切的问题,但对于您的导入 - 您应该将其更改为以下内容:

 <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Schema.SqlTasks.targets" />

如果这不能解决问题,请问您是否安装了 Resharper,如果有的话,请尝试删除其缓存。

是的,我已经安装了Resharper。 - aggaton
1
@aggaton - 在 connect 上有一个链接,显示了一个类似的错误,当时删除 resharper 的缓存后问题得到了解决。 - Blachshma
删除resharper缓存文件对我来说似乎是个好办法,谢谢。我将缓存移动到%TEMP%以便更容易找到并且删除了ReSharperChache目录,然后重新启动了VS2012。 - aggaton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接