Visual Studio 2019 无法定位 .Net Core SDK

muz*_*muz 66 visual-studio .net-framework

我正在关注Microsoft Docs 上的本教程 -在会话和设备之间共享 Azure 空间定位点

它要求我在 VS 中打开一个项目,但是当我尝试打开它时出现以下错误:

错误:项目系统无法打开项目文件,因为它缺少一些关键导入或找不到引用的SDK。

详细信息:无法找到 .NET Core SDK。检查它是否已安装以及 global.json 中指定的版本(如果有)是否与安装的版本匹配。

我有在 JSON 中指定的 SDK 版本以及在教程中指定的所有其他工具,但仍然没有。我想我在某个地方遗漏了一步。任何帮助将不胜感激。

Max*_*oll 104

步骤 1)首先从命令行运行dotnet --list-sdks(如Grzegorz Smulko 的回答)。记下最大的版本号。

在此处输入图片说明

步骤 2) 在解决方案的根目录下创建一个 global.json 文件,其中包含步骤 1 中的确切版本号。它需要包含所有数字,否则将无法工作。这是我在撰写本文时的版本

{
  "sdk": {
    "version": "3.1.101"
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 干杯,虽然这有帮助,但我发现当你没有安装 2.2.205 版本时,VS 2019 会停止打开 .net 核心项目。使用 global.json 只是不方便,工具不应该依赖它。它应该使用任何目标的最新版本。MS 再次尝试我们。 (7认同)
  • 这解决了我的问题,但我不知道为什么!我还有其他没有这个文件的项目正在运行。 (4认同)
  • 虽然这个文件存在,但我需要更新版本 (3认同)
  • 根据@Gopi,我发现该文件确实存在于根文件夹中,但其中的版本号适用于我尚未安装的旧 SDK。我运行“dotnet --list-dsks”以查找最新的文件并使用正确的 SDK 编号更新文件。然后加载解决方案。 (3认同)
  • @CSharper:VS 也会为 global.json 寻找父文件夹链。可能您的特定文件夹不包含 global.json,但某些父文件夹 **did** 包含一个,它明确定义了一个版本,而您没有。因此,如果您覆盖了特定文件夹,现在它可以工作了。您的其他项目也驻留在没有 global.json ** ** 的文件夹中,因此没有限制性约束阻止 VS 加载 (2认同)

小智 26

尝试dotnet --list-sdks在控制台中运行。根据从https://dotnet.microsoft.com/download下载 .NET Core SDKs 后出现的页面上的信息,您需要有 VS2017 的 v2.2.106 和 VS2019 的 v2.2.203 版本。

只有 v2.2.203 安装的项目在 VS2019 中没有为我加载。我也必须安装 v2.2.105。

  • 这应该是可以接受的答案,因为这正是正在发生的事情。我目前已经安装了 2.2.205, 2.2.301, 2.2.401, 3.0.100 --- 但是,如果你删除 2.2.205 Visual Studio 2019 将会中断(不会打开任何 .net Core 2.2 项目)即使您已经拥有最新的 2.2.401。 (2认同)

小智 15

我遇到这个问题是因为我卸载了一些旧的 dotnet SDK。VS2019 不仅不再加载 dotnet 核心项目,而且dotnet在我的路径上不再可用,因此在命令行上也不再像dotnet.

在安装了多个旧版本的 dotnet 并修复了我的 VS2019 安装后,我终于能够通过添加C:\Program Files\dotnet\到我的路径来修复它。然后 VS2019 将再次加载项目。

此外,这些都不会影响 VS2017,它可以加载并完全与项目配合使用。当我指定 dotnet 可执行文件的完整路径时,它在命令行上工作。

  • 很有帮助!在我的情况下,这是相反的:我有 2 个路径指向 `program files\dotnet` 和 `program files(x86)\dotnet`,我删除了第二个,然后 Visual Studio 能够加载项目。 (5认同)

小智 12

我通过安装 x86 版本的 SDK 修复了它。

看起来每个版本的 Visual Studio 都有它自己的相应 dotnet 版本,它建立在它的基础上。这是由于 msbuild 要求。

如果您是 Visual Studio 用户,则存在 MSBuild 版本要求,因此请仅使用每个 Visual Studio 版本支持的 .NET Core SDK。如果您使用其他开发环境,我们建议您使用最新的 SDK 版本。

https://github.com/dotnet/core/blob/master/release-notes/2.2/2.2.6/2.2.6.md

如该页面所述,每个 Visual Studio 版本都需要以下版本的 dotnet:

  • Visual Studio 2017 (Windows):.NET Core SDK x86 2.2.108
  • Visual Studio 2019 版本 16.0:.NET Core SDK x86 2.2.205
  • Visual Studio 2019 版本 16.1:.NET Core SDK x86 2.2.301
  • Visual Studio 2019 版本 16.2:.NET Core SDK x86 2.2.401


Wil*_*llT 10

以上都不适合我。我注意到我在每种类型的项目中都遇到了这个问题,甚至是非 netcore。我能够使用 global.json 并使其正常工作。然后我注意到我在更上一层的目录中有一个 global.json,它引用了 .net 核心的 alpha 版本。删除该文件和宾果游戏没有进一步的问题。

tl;博士

确保您的目录结构中没有 global.json 文件将事情搞砸。


小智 6

就我而言,删除环境路径中的程序文​​件(x86)\dotnet,然后重新启动 Visual Studio,它就可以工作了。