奇怪的 .NET Core SDK 2.2.6 行为
The strange .NET Core SDK 2.2.6 behavior
我学习了 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 在尝试调试项目时也会出现以下错误
[info]: OmniSharp.Stdio.Host
Omnisharp server running using Stdio at location 'c:\Learning\MS-Certif-20-487\AzureToolkit' on host 4820. A compatible
SDK version for global.json version: [1.0.4] from
[c:\Learning\MS-Certif-20-487\AzureToolkit\global.json] was not found
[warn]: OmniSharp.MSBuild.ProjectManager
Failed to load project file 'c:\Learning\MS-Certif-20-487\AzureToolkit\AzureToolkitWalkthrough.csproj'.
c:\Learning\MS-Certif-20-487\AzureToolkit\AzureToolkitWalkthrough.csproj(1,1)
Microsoft.Build.Exceptions.InvalidProjectFileException: The SDK
'Microsoft.NET.Sdk.Web' specified could not be found.
c:\Learning\MS-Certif-20-487\AzureToolkit\AzureToolkitWalkthrough.csproj
at
Microsoft.Build.Shared.ProjectErrorUtilities.ThrowInvalidProject(String
errorSubCategoryResourceName, IElementLocation elementLocation, String
resourceName, Object[] args) at
Microsoft.Build.Evaluation.Evaluator4.ExpandAndLoadImportsFromUnescapedImportExpressionConditioned(String
directoryOfImportingFile, ProjectImportElement importElement, List
1&
projects, SdkResult& sdkResult, Boolean throwOnFileNotExistsError)
at Microsoft.Build.Evaluation.Evaluator4.ExpandAndLoadImports(String
directoryOfImportingFile, ProjectImportElement importElement,
SdkResult& sdkResult) at
Microsoft.Build.Evaluation.Evaluator
4.EvaluateImportElement(String
directoryOfImportingFile, ProjectImportElement importElement) at
Microsoft.Build.Evaluation.Evaluator4.PerformDepthFirstPass(ProjectRootElement
currentProjectOrImport) at
Microsoft.Build.Evaluation.Evaluator
4.Evaluate(ILoggingService
loggingService, BuildEventContext buildEventContext) at
Microsoft.Build.Evaluation.Project.Reevaluate(ILoggingService
loggingServiceForEvaluation, ProjectLoadSettings loadSettings,
EvaluationContext evaluationContext) at
Microsoft.Build.Evaluation.Project.ReevaluateIfNecessary(ILoggingService
loggingServiceForEvaluation, ProjectLoadSettings loadSettings,
EvaluationContext evaluationContext) at
Microsoft.Build.Evaluation.Project.Initialize(IDictionary2
globalProperties, String toolsVersion, String subToolsetVersion,
ProjectLoadSettings loadSettings, EvaluationContext evaluationContext)
at Microsoft.Build.Evaluation.Project..ctor(String projectFile,
IDictionary
2 globalProperties, String toolsVersion, String
subToolsetVersion, ProjectCollection projectCollection,
ProjectLoadSettings loadSettings, EvaluationContext evaluationContext)
at Microsoft.Build.Evaluation.ProjectCollection.LoadProject(String
fileName, 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, Func
1 loader) in
C:\projects\omnisharp-roslyn\src\OmniSharp.MSBuild\ProjectManager.cs:line
308
这很简单。您的主目录或相对于您的解决方案或项目的某个路径中有一个 global.json
,它被设置为使用 .NET Core SDK/runtime 的 1.0.4。你没有安装 1.0.4,所以你得到了错误。 global.json
文件影响 所有 使用 dotnet
,因此尝试生成新的 global.json
也会失败。
简单地说,您只需要找到现有文件并手动将版本更改为您确实安装的版本,或者完全删除它,允许最新安装SDK/runtime版本成为默认版本。
A compatible SDK version for global.json version: [1.0.4] from
[C:\Learning\MS-Certif-20-487\AzureToolkit\global.json] was not found
如该错误和建议所示,您的路径 C:\Learning\MS-Certif-20-487\AzureToolkit\
中有一个 global.json
。手动删除它。
您似乎是通过创建自己的 asp.net 核心项目来使用存储库 AzureToolkit, for this project, it targets to netcoreapp1.1
. If you are learning Azure Storage APIs for .NET
, I would suggest you get started from Azure Storage APIs for .NET,而不是使用旧的 .net 核心版本克隆现有项目。您可能会遇到其他问题,因为您可能不熟悉 Asp.NET 核心和 SPA 项目模板。
我学习了 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 在尝试调试项目时也会出现以下错误
[info]: OmniSharp.Stdio.Host Omnisharp server running using Stdio at location 'c:\Learning\MS-Certif-20-487\AzureToolkit' on host 4820. A compatible SDK version for global.json version: [1.0.4] from [c:\Learning\MS-Certif-20-487\AzureToolkit\global.json] was not found [warn]: OmniSharp.MSBuild.ProjectManager Failed to load project file 'c:\Learning\MS-Certif-20-487\AzureToolkit\AzureToolkitWalkthrough.csproj'. c:\Learning\MS-Certif-20-487\AzureToolkit\AzureToolkitWalkthrough.csproj(1,1) Microsoft.Build.Exceptions.InvalidProjectFileException: The SDK 'Microsoft.NET.Sdk.Web' specified could not be found. c:\Learning\MS-Certif-20-487\AzureToolkit\AzureToolkitWalkthrough.csproj at Microsoft.Build.Shared.ProjectErrorUtilities.ThrowInvalidProject(String errorSubCategoryResourceName, IElementLocation elementLocation, String resourceName, Object[] args) at Microsoft.Build.Evaluation.Evaluator
4.ExpandAndLoadImportsFromUnescapedImportExpressionConditioned(String directoryOfImportingFile, ProjectImportElement importElement, List
1& projects, SdkResult& sdkResult, Boolean throwOnFileNotExistsError)
at Microsoft.Build.Evaluation.Evaluator4.ExpandAndLoadImports(String directoryOfImportingFile, ProjectImportElement importElement, SdkResult& sdkResult) at Microsoft.Build.Evaluation.Evaluator
4.EvaluateImportElement(String directoryOfImportingFile, ProjectImportElement importElement) at Microsoft.Build.Evaluation.Evaluator4.PerformDepthFirstPass(ProjectRootElement currentProjectOrImport) at Microsoft.Build.Evaluation.Evaluator
4.Evaluate(ILoggingService loggingService, BuildEventContext buildEventContext) at Microsoft.Build.Evaluation.Project.Reevaluate(ILoggingService loggingServiceForEvaluation, ProjectLoadSettings loadSettings, EvaluationContext evaluationContext) at Microsoft.Build.Evaluation.Project.ReevaluateIfNecessary(ILoggingService loggingServiceForEvaluation, ProjectLoadSettings loadSettings, EvaluationContext evaluationContext) at Microsoft.Build.Evaluation.Project.Initialize(IDictionary2 globalProperties, String toolsVersion, String subToolsetVersion, ProjectLoadSettings loadSettings, EvaluationContext evaluationContext) at Microsoft.Build.Evaluation.Project..ctor(String projectFile, IDictionary
2 globalProperties, String toolsVersion, String subToolsetVersion, ProjectCollection projectCollection, ProjectLoadSettings loadSettings, EvaluationContext evaluationContext) at Microsoft.Build.Evaluation.ProjectCollection.LoadProject(String fileName, 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, Func
1 loader) in C:\projects\omnisharp-roslyn\src\OmniSharp.MSBuild\ProjectManager.cs:line 308
这很简单。您的主目录或相对于您的解决方案或项目的某个路径中有一个 global.json
,它被设置为使用 .NET Core SDK/runtime 的 1.0.4。你没有安装 1.0.4,所以你得到了错误。 global.json
文件影响 所有 使用 dotnet
,因此尝试生成新的 global.json
也会失败。
简单地说,您只需要找到现有文件并手动将版本更改为您确实安装的版本,或者完全删除它,允许最新安装SDK/runtime版本成为默认版本。
A compatible SDK version for global.json version: [1.0.4] from [C:\Learning\MS-Certif-20-487\AzureToolkit\global.json] was not found
如该错误和建议所示,您的路径 C:\Learning\MS-Certif-20-487\AzureToolkit\
中有一个 global.json
。手动删除它。
您似乎是通过创建自己的 asp.net 核心项目来使用存储库 AzureToolkit, for this project, it targets to netcoreapp1.1
. If you are learning Azure Storage APIs for .NET
, I would suggest you get started from Azure Storage APIs for .NET,而不是使用旧的 .net 核心版本克隆现有项目。您可能会遇到其他问题,因为您可能不熟悉 Asp.NET 核心和 SPA 项目模板。