升级到Visual Studio 2013后,由于缺少SqlServer.targets文件,项目无法加载

时间:2013-11-15 16:58:37

标签: sql-server visual-studio msbuild visual-studio-2013

升级到Visual Studio 2013后,我发现在尝试打开解决方案时无法加载旧的SQL项目。显示的错误是:

  

找不到导入的项目“C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin \ SqlServer.targets”。确认声明中的路径是否正确,以及该文件是否存在于磁盘上。 C:\一些\路径\至\项目\ Database.sqlproj

在我的.sqlproj文件中,我有一行

<Import Project="$(MSBuildToolsPath)\SqlServer.targets" />

在Visual Studio 2012中解析为C:\Windows\Microsoft.NET\Framework\v4.0.30319\SqlServer.targets,但在Visual Studio 2013中,这将解析为C:\Program Files (x86)\MSBuild\12.0\bin\SqlServer.targets。但是,SqlServer.targets文件都不在这些位置。

据推测,这是因为MSBuild成为Visual Studio的一部分,而不是它成为.Net Framework的一部分。

有谁知道如何解决此问题并将此项目迁移到Visual Studio 2013?

7 个答案:

答案 0 :(得分:27)

刚刚将SqlServer.targetsC:\Windows\Microsoft.NET\Framework\v3.5复制到C:\Program Files (x86)\MSBuild\12.0\Bin,这有帮助。 VS2013现在可以打开旧项目了。

答案 1 :(得分:4)

从Visual Studio 2008升级到2013时,我遇到了类似的问题。 花了一段时间但我不得不为VS 2013安装SSDT(再次),然后我创建了一个新的数据库项目来找出新sqlserver.targets文件的相对路径。 它应该如下:

  <Import Condition="'$(SQLDBExtensionsRefPath)' != ''" Project="$(SQLDBExtensionsRefPath)\Microsoft.Data.Tools.Schema.SqlTasks.targets" />
  <Import Condition="'$(SQLDBExtensionsRefPath)' == ''" Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets" />

我发现修复此错误的最大障碍是尝试了解所提供的错误消息(BC2014:值&#39;数据库&#39;对于选项&#39;目标&#39;无效)

希望这有帮助!

答案 2 :(得分:2)

我有同样的问题,我解决了这个问题: 只需创建一个名为&#39; SQLServer.targets &#39;的文件。 on&#39; C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 &#39;具有以下内容:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

    <PropertyGroup>
           <SqlClrTargetsFullPath>$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlClr.targets</SqlClrTargetsFullPath>
    </PropertyGroup>

    <Import Project="$(SqlClrTargetsFullPath)" Condition="Exists('$(SqlClrTargetsFullPath)')"/>
</Project>
祝你好运。

答案 3 :(得分:1)

尝试在VS 2013下构建VS 2010解决方案时遇到了同样的问题。修复方法是首先将解决方案文件升级到VS 2013。之后,它无需进一步修改即可使用。

答案 4 :(得分:0)

其中几个解决方案导致的错误

我发布了一个特定的问题(C# VS 2013 Error 02019: Invalid target type for /target: must specify 'exe', 'winexe', 'library', 'module', 'appcontainerexe' or 'winmdobj' CSC),关于克里斯托恩在Vladimir Dronov的回答下描述的致命构建错误:

  

错误1 02019:/ target的目标类型无效:必须指定'exe','winexe','library','module','appcontainerexe'或'winmdobj'CSC

修复

通过遵循此论坛中的建议,我能够摆脱VS2013社区版中与SQL Server开发工具兼容性问题相关的错误:

https://connect.microsoft.com/SQLServer/feedbackdetail/view/979839

  

发布者:bsclifton于11/15/2014上午7:18

     

社区2013版也有这个问题;转到工具 - &gt;扩展和更新并更新“用于数据库工具的Microsoft SQL Server更新”解决了该问题:)

如果这对您不起作用,我建议您查看该论坛,因为它提供了有关如何解决问题的其他几个想法

答案 5 :(得分:0)

解决方案1:

如果项目是.csproj文件,则应检查Visual Studio是否在升级时生成了.sqlproj文件。如果是这种情况,您可以将其添加到解决方案中。

解决方案2:

您可以尝试更改.sqlproj文件中的以下行:

await MainPage.Navigation.PushAsync(new ExamplePage(1));

<Import Project="$(MSBuildToolsPath)\SqlServer.targets" />

答案 6 :(得分:0)

在Windows 10中打开较旧的项目时也会发生这种情况

在Windows 10上的Visual Studio 2010中打开旧的SQL Server CLR程序集时,我遇到了相同的问题(找不到SqlServer.targets),最初用于编写程序集的相同版本。 / p>

确认同一项目在Windows 7计算机上的Visual Studio 2010中完全可以正常打开。

解决方案

请注意错误消息。就我而言,是:

  

找不到导入的项目“ C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ SqlServer.targets”。确认声明中的路径正确,并且文件在磁盘上。

只需将SqlServer.targets从弗拉基米尔·德罗诺夫(Vladimir Dronov)的答案“ C:\ Windows \ Microsoft.NET \ Framework \ v3.5 \ SqlServer.targets”中指示的位置复制到错误消息中指示的目录。

在我的情况下是“ C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \”。