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

Chr*_*ris 30 sql-server msbuild visual-studio 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" />
Run Code Online (Sandbox Code Playgroud)

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

小智 29

刚才复制SqlServer.targetsC:\Windows\Microsoft.NET\Framework\v3.5C:\Program Files (x86)\MSBuild\12.0\Bin,它可以帮助.VS2013现在能够打开旧项目.

  • 它能够打开旧项目,但无法构建错误:CS2019:/ target的目标类型无效:必须指定'exe','winexe','library','module','appcontainerexe'或'winmdobj' (4认同)

Rol*_*lan 5

我在从 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" />
Run Code Online (Sandbox Code Playgroud)

我发现修复此错误的最大障碍是试图理解提供的错误消息(BC2014:值 'database' 对于选项 'target' 无效)

希望这可以帮助!


小智 1

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

  • 你是如何将解决方案文件升级到VS 2013的? (23认同)