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

问题描述 投票:29回答:7

升级到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?

sql-server visual-studio msbuild visual-studio-2013
7个回答
1
投票

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


28
投票

刚从SqlServer.targets复制C:\Windows\Microsoft.NET\Framework\v3.5C:\Program Files (x86)\MSBuild\12.0\Bin,这有帮助。 VS2013现在能够打开旧项目。


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:值“数据库”对于选项'target'无效)

希望这可以帮助!


2
投票

我有同样的问题,我解决了这个问题:只需在'C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319'上创建一个名为'SQLServer.targets'的文件,其中包含以下内容:

<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>

祝好运。


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于2014年11月15日上午7:18发布

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

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


0
投票

Solution 1:

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

Solution 2:

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

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

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

0
投票

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

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

确认相同的项目在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 \”。

© www.soinside.com 2019 - 2024. All rights reserved.