升级到 Visual Studio 2013 后,由于缺少 SqlServer.targets 文件,项目无法加载
-
20-12-2019 - |
题
升级到 Visual Studio 2013 后,我发现当我尝试打开解决方案时,旧的 SQL 项目无法加载。显示的错误是:
找不到导入的项目“C:\Program Files (x86)\MSBuild\12.0\bin\SqlServer.targets”。确认声明中的路径正确,并且该文件存在于磁盘上。C:\Some\Path o\Project\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?
解决方案
当我尝试在 VS 2013 下构建 VS 2010 解决方案时,我遇到了同样的问题。修复方法是先将解决方案文件升级到 VS 2013。之后,无需进一步修改即可运行。
其他提示
刚刚复制的 SqlServer.targets
从 C:\Windows\Microsoft.NET\Framework\v3.5
到 C:\Program Files (x86)\MSBuild\12.0\Bin
这很有帮助。VS2013现在可以打开旧项目了。
从 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:值“database”对于选项“target”无效)
希望这可以帮助!
我有同样的问题,我是这样解决的:只需创建一个名为 'SQLServer.targets' 在 'C:\Windows\Microsoft.NET\Framework\v4.0.30319' 包含以下内容:
<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>
祝你好运。
在 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\”。
由其中几种解决方案导致的错误
我发布了一个具体问题(C# VS 2013 错误 02019:/target 的目标类型无效:必须指定“exe”、“winexe”、“库”、“模块”、“appcontainerexe”或“winmdobj” CSC)关于 Chris Torng 在 Vladimir Dronov 的回答下描述的致命构建错误:
错误 1 02019:/target 的目标类型无效:必须指定“exe”、“winexe”、“库”、“模块”、“appcontainerexe”或“winmdobj” CSC
修复方法
通过遵循本论坛中的建议,我能够摆脱 VS2013 社区版中与 SQL Server 开发工具兼容性问题相关的错误:
https://connect.microsoft.com/SQLServer/feedbackdetail/view/979839
由 bsclifton 发表于 11/15/2014 at 7:18 AM
Community 2013 版也有这个问题;转到“工具”->“扩展和更新”并更新“数据库工具的 Microsoft SQL Server 更新”解决了该问题:)
如果这对您不起作用,我建议您查看该论坛,因为它提供了有关如何解决问题的其他一些想法
解决方案一:
如果项目是 .csproj 文件,则应检查 Visual Studio 在升级时是否也生成了 .sqlproj 文件。如果是这种情况,您可以将其添加到解决方案中。
解决方案2:
您可以尝试更改 .sqlproj 文件中的以下行:
<Import Project="$(MSBuildToolsPath)\SqlServer.targets" />
到
<Import Project="$(MSBuildBinPath)\SqlServer.targets" />