自 Visual Studio 升级以来“找不到导入的项目 Microsoft.Data.Tools.Schema.SqlTasks.targets”

问题描述 投票:0回答:3

我刚刚将 Visual Studio 从 2017 升级到 2017.3。现在,当我尝试构建时,我的数据库项目出现此错误:

错误:找不到导入的项目“C:\Program Files (x86)\Microsoft Visual Studio�7\Enterprise\MSBuild\Microsoft\VisualStudio 15.3\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets”。另外,尝试在 $(MSBuildExtensionsPath) 的后备搜索路径中查找“Microsoft\VisualStudio 15.3\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets” - “C:\Program Files (x86)\MSBuild ”。这些搜索路径在“C:\Program Files (x86)\Microsoft Visual Studio�7\Enterprise\MSBuild”中定义 .0\Bin\MSBuild.exe.Config”。确认声明中的路径正确,并且该文件存在于磁盘上的搜索路径之一。C:\Users\Ian\Documents\Maslow\Maslow\Database \数据库.sqlproj

请注意,此路径包含 v15.3。文件可用,但文件夹名为 v15.0。

如果我编辑 Database.sqlproj 它包含以下行:

<SSDTExists Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets')">True</SSDTExists>

注意 $(VisualStudioVersion) 变量的用户。

我可以将其硬编码为 15.0,但是对于任何使用不同版本的 Visual Studio 的人来说,它都会崩溃。我怎样才能以一种不会给其他用户带来新问题的方式解决这个问题?

visual-studio visual-studio-2017 sql-server-data-tools
3个回答
4
投票

除了 v15.4 之外,我也遇到了同样的问题。对 $(VisualStudioVersion) 进行硬编码以匹配我的文件夹 (15.0) 解决了该错误,但暴露了一系列其他更深奥的错误,我仍然无法构建。

就我而言,我碰巧还运行 ReSharper 构建引擎而不是 Visual Studio 构建引擎。禁用 ReSharper 构建引擎后,我就能够获得干净的构建。 (菜单->ReSharper->选项 - 工具类别,构建 - 常规。)我正在运行 ReSharper 版本 2017.1

编辑:刚刚在 ReSharper 论坛上找到了这篇文章: https://resharper-support.jetbrains.com/hc/en-us/community/posts/115000610044-Build-fails-but-only-under-Resharper-Build

一位用户的解决方案是重新安装 VisualStudio,从而更正 ReSharper Build 引擎使用的路径。 (显然,当 VS 升级后,它就会变得不正常。)


0
投票

我根本无法在 Visual Studio 2017.3 中使其正常工作,并且无法找到 Visual Studio 2017.2 或更早版本的安装程序。

因此我目前正在使用 Visual Studio 2015。

可能相关的错误报告:https://github.com/Microsoft/msbuild/issues/2369


0
投票

似乎是 Dotnet 核心的问题

不支持运行SQL项目

在这里找到了一些解决方案https://gordonbeeming.com/blog/msb4019-microsoft-data-tools-schema-sqltasks-targets-was-not-found

我能够通过使用 msbuild 而不是 dotnet build 来克服它 有关如何使 msbuild 工作的指南请参见此处 => 如何使用 Windows SDK 7.1 从命令行运行 msbuild?

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