更新Visual Studio 2019时出现错误

8

我对Visual Studio 2019 Community进行了更新,现在的版本是16.10.2。但现在我无法打开我的解决方案了。已有的项目无法加载,日志显示如下:

18-6-2021 08:58:43 可恢复的 System.MissingMethodException: 方法未找到:'System.Collections.Generic.LinkedListNode1<!0> System.Collections.Generic.LinkedList1.gdt_Last()'. 在Microsoft.Build.Evaluation.ProjectRootElementCache.BoostEntryInStrongCache(ProjectRootElement projectRootElement) 在Microsoft.Build.Evaluation.ProjectRootElementCache.RenameEntryInternal(String oldFullPathIfAny, ProjectRootElement projectRootElement) 在Microsoft.Build.Evaluation.ProjectRootElementCache.AddEntry(ProjectRootElement projectRootElement) 在Microsoft.Build.Construction.ProjectRootElement..ctor(String path, ProjectRootElementCacheBase projectRootElementCache, Boolean preserveFormatting) 在Microsoft.Build.Construction.ProjectRootElement.OpenLoader(String path, ProjectRootElementCacheBase projectRootElementCache) 在Microsoft.Build.Evaluation.ProjectRootElementCache.Get(String projectFile, OpenProjectRootElement openProjectRootElement, Boolean isExplicitlyLoaded, Nullable1 preserveFormatting) 在Microsoft.Build.Construction.ProjectRootElement.Open(String path, ProjectRootElementCacheBase projectRootElementCache, Boolean isExplicitlyLoaded, Nullable1 preserveFormatting) 在Microsoft.Build.Construction.ProjectRootElement.Open(String path, ProjectCollection projectCollection, Nullable1 preserveFormatting) 在Microsoft.VisualStudio.ProjectSystem.ProjectLockService.Microsoft.VisualStudio.ProjectSystem.IProjectLockReleaser.GetProjectXmlAsync(String projectFile, CancellationToken cancellationToken) 在Microsoft.VisualStudio.ProjectSystem.UnconfiguredProjectImpl.<>c__DisplayClass185_0.<<SaveUserFileAsync>b__0>d.MoveNext() --- 前一个调用中发生异常的堆栈跟踪位置的结尾 --- 在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在Microsoft.VisualStudio.Threading.JoinableTask.<JoinAsync>d__76.MoveNext() --- 前一个调用中发生异常的堆栈跟踪位置的结尾 --- 在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在Microsoft.VisualStudio.ProjectSystem.ProjectLockService.<ExecuteWithinLockAsync>d__128.MoveNext() --- 前一个调用中发生异常的堆栈跟踪位置的结尾 --- 在Microsoft.VisualStudio.ProjectSystem.ProjectLockService.<ExecuteWithinLockAsync>d__128.MoveNext() --- 前一个调用中发生异常的堆栈跟踪位置的结尾 --- 在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在Microsoft.VisualStudio.ProjectSystem.UnconfiguredProjectImpl.<DisposeAsync>d__174.MoveNext() ===================
如果我使用MVC Api开始一个新的解决方案,那么解决方案会被创建,但项目不会被添加。手动将其添加到解决方案时,会出现以下错误:
“Method not found: 'System.Collections.Generic.LinkedListNode1<!0> System.Collections.Generic.LinkedList1.gdt_Last()'”
我尝试过:
- 修复Visual Studio - 卸载了与.NET或Microsoft框架有关的所有内容和Visual Studio - 谷歌搜索(没有发现)
是否有人知道为什么会突然出现这种情况?

如果我使用MVC Api开始一个新的解决方案,那么解决方案会被创建,但是项目不会被添加。你是添加了一个现有的项目还是新创建的项目? - nilsK
@nilsK 我用新的解决方案创建了一个新项目(启动屏幕 -> 创建新项目 -> 填写所有必填字段)。然后我在解决方案资源管理器中看到了解决方案名称,但没有看到项目。但是该项目已经在磁盘上创建。当我尝试将此项目添加到解决方案时,我得到了我在原始帖子中提到的错误。 - user1140479
1
猜测:如果出现“找不到方法”的错误,可能是因为(VS使用的)框架与预期的不同。您安装了哪些 .Net 版本?请参考此链接。但我认为重新安装 VS 应该可以解决这个问题。 - Hans Kesting
如果您正在使用NuGet包,请检查包格式的设置(VS菜单=>工具=>选项=>NuGet包管理器=>常规=>包管理)。还要检查是否安装了必要的工作负载和/或个别组件(打开“Visual Studio Installer”,然后单击“修改”)。 - Tu deschizi eu inchid
显然,您可以安装Visual Studio版本SxS(并排)。https://learn.microsoft.com/en-us/visualstudio/install/install-visual-studio-versions-side-by-side?view=vs-2019。我自己还没有尝试过。 - Pieterjan
我无法重现您的问题,您能否在开发者社区上报告它(打开Visual Studio > 菜单 > 帮助 > 发送反馈 > 报告问题)? - Mia Wu-MSFT
3个回答

1
我怀疑最新版本的VS2019更新了解决方案缓存,没有向后兼容或损坏了它。尝试删除解决方案文件夹中的隐藏文件夹.vs,然后使用你想要使用的VS2019重新打开解决方案。

0

检查此解决方案

打开 .csproj 文件并删除此标签

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> bla-bla </Target>

我在我的项目中没有这个目标。链接中的解决方案并不适用于我的问题。 - user1140479

0

这是我的建议:

  1. 如果你的项目有 NuGet 包,请仔细检查并逐个更新。
  2. 我不确定你是否安装了最新版本的 .Net,即最近的 5 版本。当你获取 System.Collections.dll 并将其替换为具有相同名称的相关 .dll 文件时会发生什么。例如,在我的计算机上,该 dll 文件位于 C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0 中。

然而,我认为当你将框架更新到 .Net 5 并更新相关的 NuGet 包时,问题就会得到解决。

如何更改项目版本?

右键单击项目,选择 属性 --> 应用程序 --> 目标框架。目标框架下拉菜单显示了你的计算机上安装的框架列表。如果你不想更新它,至少选择 .Net 5 并在下拉菜单中将版本降低。

enter image description here enter image description here


感谢您的回复。不幸的是,我无法打开我的解决方案,也无法加载项目,正如原帖中所述。但我可以编辑csproj文件。我已经安装了.NET 5.0(一发布就安装了),以及.NET Core 3.1(目前我所有的项目都在使用)。这个解决方案对我的问题没有用。 - user1140479
在 csproj 文件中手动检查您的 NuGet 包版本。 - Soner from The Ottoman Empire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接