SDK 解析器故障 - Net 7 - Net 6

Dav*_*vid 45 c# jetbrains-ide visual-studio rider .net-7.0

刚刚下载并安装了 SDK Net 7.0.100,它破坏了现有应用程序,并且它们将不再在 VS 2022 或 Rider 中加载。

复制后出现以下错误:

error  : SDK Resolver Failure: "The SDK resolver "Microsoft.DotNet.MSBuildSdkResolver" 
failed while attempting to resolve the SDK "Microsoft.NET.Sdk". Exception: "Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadManifestCompositionException: Workload definition 'wasm-tools' in manifest 'microsoft.net.workload.mono.toolchain.net7' [C:\Program Files\dotnet\sdk-manifests\7.0.100\microsoft.net.workload.mono.toolchain.net7\WorkloadManifest.json] conflicts with manifest 'microsoft.net.workload.mono.toolchain' [C:\Program Files\dotnet\sdk-manifests\7.0.100\microsoft.net.workload.mono.toolchain\WorkloadManifest.json]
   at Microsoft.NET.Sdk.WorkloadManifestReader.WorkloadResolver.ComposeWorkloadManifests()
   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 
Run Code Online (Sandbox Code Playgroud)

小智 40

我遇到了类似的问题。我使用添加删除程序卸载了 7.0.100-preview.5.22307.18 sdk,然后将项目文件中的 TargetFramework 更改为使用 7.0,然后我就能够加载项目了。

  • 我什至不必更改目标框架。只需卸载 7.0.100-preview 即可加载我的项目。哇!我是否喜欢搜索我的错误消息并找到一个在我遇到错误的同一天提出并回答的问题! (6认同)
  • 我采纳了一半的建议,我使用添加/删除卸载了 7.0.100,然后安装了最新的 6.0 SDK,https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-6.0。 403-windows-x64-installer 对我来说这很有效,谢谢。 (4认同)
  • 我刚刚卸载了 .Net 7 的预览版,它对我有用。我的项目针对 .Net 6 SDK。 (4认同)

nag*_*son 33

编辑:这已正式记录在发行说明中的​​已知问题

我来自 .NET SDK 团队。抱歉你正在经历这个。我很想对其他答案发表评论,但我没有这样做的声誉。

蒂姆·法利(Tim Farley)建议的是官方认可的解决方法;通过添加/删除程序卸载任何预览版 7 SDK 应该可以解决该问题。至于为什么会发生这种情况以及为什么卸载预览 SDK 可以解决问题,我在这里做了一些解释: https: //github.com/dotnet/sdk/issues/28947#issuecomment-1307987337。TLDR:一些工作负载在 .NET 7 预览开发过程中被重命名,以支持多目标等功能,当您下载新的 RTM 时,旧的预览文件可能会干扰它。

建议更新TargetFramework,但与此问题无关。通常,每个 .NET 版本和相关新功能的重大更改都会在您的TargetFramework(TFM) 后面进行控制,因此在更新 TFM 之前(而不是更新 SDK 时),事情不会发生中断。(不幸的是,在本例中事实并非如此。)

对于升级到 .NET 8 时是否会再次发生这种情况,Scott表示:根据当前工作负载的结构,此问题将再次发生。我们正在讨论如何做出改变以防止这种情况再次发生,尽管这并不理想。我们还在考虑添加dotnet workload clean或修复此问题。在 SDK GH 线程上与我们交流,或者在此处与我交流,是向我们发送有关此问题的反馈的好方法。


YMC*_*YMC 12

修复 Visual Studio 安装对我没有帮助。卸载 .NET 7 错误工作负载(“wasm-tools”)也没有,因为任何卸载或修复它的尝试都会以相同的错误消息结束。

在此输入图像描述

由于没有传统的选项来解决该问题,我只是继续物理删除冲突的文件夹:microsoft.net.workload.mono.toolchain,留下第二个 microsoft.net.workload.mono.toolchain。net7完好无损。幸运的是它解决了我机器上的问题。从现在开始我会更加谨慎地安装 Ms RC 软件包

  • 我这样做了并且成功了。我不知道下次更新时我们是否会回到这种状态,但至少我可以继续编码。 (3认同)

Git*_*ura 8

即使在新的 .NET 项目中,我也遇到了类似的问题。我使用添加删除程序卸载了 7.0.100-preview.2.22153.17 SDK,并且能够再次创建一个新项目。我现在只剩下一个 .NET 7.0 SDK(来自 Visual Studio),如下所示。

在此输入图像描述

  • 这是最简单的解决方案,如果像我一样在 Windows 11 中使用“应用程序和功能”中的“搜索应用程序”过滤器文本框来查找 SDK 并卸载它。 (2认同)