更新至Visual Studio 2022 17.5.4后所有项目无法加载求助
问题
我最近将Visual Studio 2022从17.4.5版本更新至17.5.4版本,更新完成后所有项目均无法加载。我已尝试修复安装程序,也卸载重装了最新版本及旧版本,但问题仍未解决,恳请提供帮助。
错误日志如下:
error : SDK Resolver Failure: "The SDK resolver "Microsoft.DotNet.MSBuildSdkResolver" failed while attempting to resolve the SDK "Microsoft.NET.Sdk". Exception: "System.FormatException: Invalid numeric identifier: '300_bak'. at Microsoft.Deployment.DotNet.Releases.ReleaseVersion.TryParseCoreVersionPart(String input, Boolean throwOnFailure, Int32& value) at Microsoft.Deployment.DotNet.Releases.ReleaseVersion.TryParse(String input, Boolean throwOnFailure, ReleaseVersion& version) at Microsoft.Deployment.DotNet.Releases.ReleaseVersion.Parse(String input) at Microsoft.Deployment.DotNet.Releases.ReleaseVersion..ctor(String version) at Microsoft.NET.Sdk.WorkloadManifestReader.SdkFeatureBand..ctor(String version) at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.<>c.<FallbackForMissingManifest>b__9_1(String featureBand) at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext() at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() at System.Linq.Enumerable.Max[TSource](IEnumerable`1 source) at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.FallbackForMissingManifest(String manifestId) at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.GetManifestDirectories() at Microsoft.NET.Sdk.WorkloadManifestReader.SdkDirectoryWorkloadManifestProvider.<GetManifests>d__7.MoveNext() at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.LoadManifestsFromProvider(IWorkloadManifestProvider manifestProvider) at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.Create(IWorkloadManifestProvider manifestProvider, String dotnetRootPath, String sdkVersion, String userProfileDir) at Microsoft.NET.Sdk.WorkloadMSBuildSdkResolver.CachingWorkloadResolver.Resolve(String sdkReferenceName, String dotnetRootPath, String sdkVersion, String userProfileDir) at Microsoft.DotNet.MSBuildSdkResolver.DotNetMSBuildSdkResolver.Resolve(SdkReference sdkReference, SdkResolverContext context, SdkResultFactory factory) at Microsoft.Build.BackEnd.SdkResolution.SdkResolverService.TryResolveSdkUsingSpecifiedResolvers(IList`1 resolvers, Int32 submissionId, SdkReference sdk, LoggingContext loggingContext, ElementLocation sdkReferenceLocation, String solutionPath, String projectPath, Boolean interactive, Boolean isRunningInVisualStudio, SdkResult& sdkResult)
解决方案
问题根源
错误日志中明确指出Invalid numeric identifier: '300_bak',这是因为.NET SDK的工作负载清单目录中存在命名不符合版本规范的备份文件夹(带_bak后缀),导致SDK版本解析逻辑无法识别该目录,进而引发项目加载失败。
修复步骤
- 打开.NET SDK的工作清单目录,默认路径:
- 64位系统:
C:\Program Files\dotnet\sdk-manifests - 32位系统:
C:\Program Files (x86)\dotnet\sdk-manifests
- 64位系统:
- 在该目录下找到所有带有
_bak后缀的文件夹(如日志中的300_bak),直接删除这些文件夹,或者将后缀修改为非下划线格式(例如300-bak) - 同时检查用户目录下的SDK缓存路径:
%USERPROFILE%\.dotnet\sdk-manifests,若存在类似命名的文件夹,执行同样操作 - 重启Visual Studio,重新加载项目
额外排查步骤(若上述方法无效)
- 关闭Visual Studio,删除
%LOCALAPPDATA%\Microsoft\VisualStudio\<你的VS版本号>\ComponentModelCache目录下的所有文件,清除组件缓存后重启VS - 打开命令提示符,执行
dotnet workload list命令,检查是否有异常的工作负载,若有可尝试执行dotnet workload repair修复
内容的提问来源于stack exchange,提问作者Jack Phillips
相关产品推荐
相关产品推荐

