【问题标题】:The strange .NET Core SDK 2.2.6 behavior奇怪的 .NET Core SDK 2.2.6 行为
【发布时间】:2019-12-14 07:06:52
【问题描述】:

我学习了 Azure 认证并开始学习 Azure 教程,该教程在其演示项目中使用了 .NET Core。实际上我有 VS 2019(仅)并安装了最新的 .NET Core SDK (x64),如下

C:\Learning\MS-Certif-20-487\AzureToolkit>dotnet --info
A compatible SDK version for global.json version: [1.0.4] from [C:\Learning\MS-Certif-20-487\AzureToolkit\global.json] was not found

Host (useful for support):
  Version: 2.2.6
  Commit:  7dac9b1b51

.NET Core SDKs installed:
  2.1.102 [C:\Program Files\dotnet\sdk]
  2.1.103 [C:\Program Files\dotnet\sdk]
  2.1.104 [C:\Program Files\dotnet\sdk]
  2.1.200 [C:\Program Files\dotnet\sdk]
  2.1.201 [C:\Program Files\dotnet\sdk]
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.400 [C:\Program Files\dotnet\sdk]
  2.1.401 [C:\Program Files\dotnet\sdk]
  2.1.402 [C:\Program Files\dotnet\sdk]
  2.1.403 [C:\Program Files\dotnet\sdk]
  2.1.500 [C:\Program Files\dotnet\sdk]
  2.1.502 [C:\Program Files\dotnet\sdk]
  2.1.503 [C:\Program Files\dotnet\sdk]
  2.1.504 [C:\Program Files\dotnet\sdk]
  2.1.505 [C:\Program Files\dotnet\sdk]
  2.1.600-preview-009426 [C:\Program Files\dotnet\sdk]
  2.1.600-preview-009472 [C:\Program Files\dotnet\sdk]
  2.1.600 [C:\Program Files\dotnet\sdk]
  2.1.602 [C:\Program Files\dotnet\sdk]
  2.1.801 [C:\Program Files\dotnet\sdk]
  2.2.401 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.8 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.3-servicing-26724-03 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

C:\Learning\MS-Certif-20-487\AzureToolkit>dotnet new globaljson --sdk-version 2.2.401
A compatible SDK version for global.json version: [1.0.4] from [C:\Learning\MS-Certif-20-487\AzureToolkit\global.json] was not found
Did you mean to run dotnet SDK commands? Please install dotnet SDK from:
  https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409

C:\Learning\MS-Certif-20-487\AzureToolkit>

请注意最后一条命令,它要求使用最新的 SDK 构建一个新的 global.json 文件,似乎 dotnet 无法识别它刚刚安装的 SDK...

最后我的解决方案没有在 VS 2019 中打开,控制台中出现以下错误:

C:\Learning\MS-Certif-20-487\AzureToolkit\AzureToolkitWalkthrough.csproj : error  : 
The project file cannot be opened by the project system, because it is missing some 
critical imports or the referenced SDK cannot be found.

Detailed Information:
Unable to locate the .NET Core SDK. Check that it is installed and that the version 
specified in global.json (if any) matches the installed version.

Visual-Studio-Code 在尝试调试项目时也会出现以下错误

[信息]:OmniSharp.Stdio.Host Omnisharp 服务器使用 Stdio 在主机 4820 上的位置“c:\Learning\MS-Certif-20-487\AzureToolkit”运行。兼容的 global.json 版本的 SDK 版本:[1.0.4] 来自 [c:\Learning\MS-Certif-20-487\AzureToolkit\global.json] 未找到 [警告]:OmniSharp.MSBuild.ProjectManager 无法加载项目文件“c:\Learning\MS-Certif-20-487\AzureToolkit\AzureToolkitWalkthrough.csproj”。 c:\Learning\MS-Certif-20-487\AzureToolkit\AzureToolkitWalkthrough.csproj(1,1) Microsoft.Build.Exceptions.InvalidProjectFileException:SDK 找不到指定的“Microsoft.NET.Sdk.Web”。 c:\Learning\MS-Certif-20-487\AzureToolkit\AzureToolkitWalkthrough.csproj 在 Microsoft.Build.Shared.ProjectErrorUtilities.ThrowInvalidProject(字符串 errorSubCategoryResourceName,IElementLocation elementLocation,字符串 资源名称,对象 [] 参数)在 Microsoft.Build.Evaluation.Evaluator4.ExpandAndLoadImportsFromUnescapedImportExpressionConditioned(String directoryOfImportingFile, ProjectImportElement importElement, List1& 项目,SdkResult& sdkResult,布尔 throwOnFileNotExistsError)
在 Microsoft.Build.Evaluation.Evaluator4.ExpandAndLoadImports(String directoryOfImportingFile, ProjectImportElement importElement, SdkResult& sdkResult) at Microsoft.Build.Evaluation.Evaluator4.EvaluateImportElement(字符串 directoryOfImportingFile, ProjectImportElement importElement) 在 Microsoft.Build.Evaluation.Evaluator4.PerformDepthFirstPass(ProjectRootElement currentProjectOrImport) at Microsoft.Build.Evaluation.Evaluator4.Evaluate(ILoggingService loggingService, BuildEventContext buildEventContext) 在 Microsoft.Build.Evaluation.Project.Reevaluate(ILLoggingService loggingServiceForEvaluation,ProjectLoadSettings 加载设置, 评估上下文评估上下文)在 Microsoft.Build.Evaluation.Project.ReevaluateIfNecessary(ILoggingService loggingServiceForEvaluation,ProjectLoadSettings 加载设置, 评估上下文评估上下文)在 Microsoft.Build.Evaluation.Project.Initialize(IDictionary2 globalProperties, String toolsVersion, String subToolsetVersion, ProjectLoadSettings loadSettings, EvaluationContext evaluationContext) at Microsoft.Build.Evaluation.Project..ctor(String projectFile, IDictionary2 globalProperties, String toolsVersion, String subToolsetVersion,ProjectCollection projectCollection, ProjectLoadSettings 加载设置,EvaluationContext 评估上下文) 在 Microsoft.Build.Evaluation.ProjectCollection.LoadProject(字符串 文件名,IDictionary2 globalProperties, String toolsVersion) at OmniSharp.MSBuild.ProjectLoader.EvaluateProjectFileCore(String filePath) in C:\projects\omnisharp-roslyn\src\OmniSharp.MSBuild\ProjectLoader.cs:line 129 at OmniSharp.MSBuild.ProjectLoader.BuildProject(String filePath) in C:\projects\omnisharp-roslyn\src\OmniSharp.MSBuild\ProjectLoader.cs:line 72 at OmniSharp.MSBuild.ProjectFile.ProjectFileInfo.Load(String filePath, ProjectIdInfo projectIdInfo, ProjectLoader loader) in C:\projects\omnisharp-roslyn\src\OmniSharp.MSBuild\ProjectFile\ProjectFileInfo.cs:line 95 at OmniSharp.MSBuild.ProjectManager.<>c__DisplayClass29_0.<LoadProject>b__0() in C:\projects\omnisharp-roslyn\src\OmniSharp.MSBuild\ProjectManager.cs:line 297 at OmniSharp.MSBuild.ProjectManager.LoadOrReloadProject(String projectFilePath, Func1 加载器)在 C:\projects\omnisharp-roslyn\src\OmniSharp.MSBuild\ProjectManager.cs:line 308

【问题讨论】:

    标签: .net asp.net-core .net-core visual-studio-code visual-studio-2019


    【解决方案1】:

    这是非常直接的。您的主目录或与您的解决方案或项目相关的某个路径中有一个 global.json,它设置为使用 .NET Core SDK/运行时的 1.0.4。你没有安装 1.0.4,所以你得到了错误。 global.json 文件会影响dotnet所有 使用,因此尝试生成新的global.json 也会失败。

    简单地说,您只需找到现有文件并手动将版本更改为您已安装的版本,或者直接将其完全删除,让最新安装的 SDK/运行时版本成为默认版本.

    【讨论】:

    • 有点傻,没看到这么明显的东西
    【解决方案2】:

    global.json 版本的兼容 SDK 版本:[1.0.4] 来自 [C:\Learning\MS-Certif-20-487\AzureToolkit\global.json] 未找到

    正如此错误所表明的和建议的那样,您的路径 C:\Learning\MS-Certif-20-487\AzureToolkit\ 中有一个 global.json。手动删除。

    您似乎正在使用存储库AzureToolkit,对于这个项目,它的目标是netcoreapp1.1。如果您正在学习Azure Storage APIs for .NET,我建议您从Azure Storage APIs for .NET 开始,创建自己的asp.net 核心项目,而不是使用旧的.net 核心版本克隆现有项目。由于您可能不熟悉 Asp.NET Core 和 SPA 项目模板,因此您可能会遇到其他问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-09
      • 2017-03-03
      • 1970-01-01
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多