更新 Visual Studio 2019 错误

Posted

技术标签:

【中文标题】更新 Visual Studio 2019 错误【英文标题】:Update Visual Studio 2019 errors 【发布时间】:2021-09-02 22:18:15 【问题描述】:

我收到了 Visual Studio 2019 社区的更新。我现在使用的是 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(字符串 oldFullPathIfAny,ProjectRootElement projectRootElement) 在 Microsoft.Build.Evaluation.ProjectRootElementCache.AddEntry(ProjectRootElement projectRootElement) 在 Microsoft.Build.Construction.ProjectRootElement..ctor(字符串路径,ProjectRootElementCacheBase projectRootElementCache,布尔值 preserveFormatting) 在 Microsoft.Build.Construction.ProjectRootElement.OpenLoader(字符串路径,ProjectRootElementCacheBase projectRootElementCache) 在 Microsoft.Build.Evaluation.ProjectRootElementCache.Get(字符串 projectFile,OpenProjectRootElement openProjectRootElement,布尔 isExplicitlyLoaded,Nullable1 preserveFormatting) at Microsoft.Build.Construction.ProjectRootElement.Open(String path, ProjectRootElementCacheBase projectRootElementCache, Boolean isExplicitlyLoaded, Nullable1 preserveFormatting) 在 Microsoft.Build.Construction.ProjectRootElement.Open(字符串路径,ProjectCollection projectCollection,Nullable1 preserveFormatting) at Microsoft.VisualStudio.ProjectSystem.ProjectLockService.Microsoft.VisualStudio.ProjectSystem.IProjectLockReleaser.GetProjectXmlAsync(String projectFile, CancellationToken cancellationToken) at Microsoft.VisualStudio.ProjectSystem.UnconfiguredProjectImpl.<>c__DisplayClass185_0.<<SaveUserFileAsync>b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.VisualStudio.Threading.JoinableTask.<JoinAsync>d__76.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.VisualStudio.ProjectSystem.ProjectLockService.<ExecuteWithinLockAsync>d__128.MoveNext() --- End of stack trace from previous location where exception was thrown --- at Microsoft.VisualStudio.ProjectSystem.ProjectLockService.<ExecuteWithinLockAsync>d__128.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Microsoft.VisualStudio.ProjectSystem.UnconfiguredProjectImpl.<DisposeAsync>d__174.MoveNext() =================== 18-6-2021 08:58:43 Recoverable System.MissingMethodException: Method not found: 'System.Collections.Generic.LinkedListNode1 System.Collections.Generic.LinkedList1.gdt_Last()'. at Microsoft.Build.Evaluation.ProjectRootElementCache.BoostEntryInStrongCache(ProjectRootElement projectRootElement) at Microsoft.Build.Evaluation.ProjectRootElementCache.RenameEntryInternal(String oldFullPathIfAny, ProjectRootElement projectRootElement) at Microsoft.Build.Evaluation.ProjectRootElementCache.AddEntry(ProjectRootElement projectRootElement) at Microsoft.Build.Construction.ProjectRootElement..ctor(String path, ProjectRootElementCacheBase projectRootElementCache, Boolean preserveFormatting) at Microsoft.Build.Construction.ProjectRootElement.OpenLoader(String path, ProjectRootElementCacheBase projectRootElementCache) at Microsoft.Build.Evaluation.ProjectRootElementCache.Get(String projectFile, OpenProjectRootElement openProjectRootElement, Boolean isExplicitlyLoaded, Nullable1 preserveFormatting) 在 Microsoft.Build.Construction.ProjectRootElement.Open(字符串路径,ProjectRootElementCacheBase projectRootElementCache,布尔 isExplicitlyLoaded,Nullable1 preserveFormatting) at Microsoft.Build.Construction.ProjectRootElement.Open(String path, ProjectCollection projectCollection, Nullable1 preserveFormatting) 在 Microsoft.VisualStudio.ProjectSystem.ProjectLockService.Microsoft.VisualStudio.ProjectSystem.IProjectLockReleaser.GetProjectXmlAsync(字符串项目文件,CancellationToken 取消令牌) 在 Microsoft.VisualStudio.ProjectSystem.UnconfiguredProjectImpl.c__DisplayClass185_0.d.MoveNext() --- 从之前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.VisualStudio.Threading.JoinableTask.d__76.MoveNext() --- 从之前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.VisualStudio.ProjectSystem.ProjectLockService.d__128.MoveNext() --- 从之前抛出异常的位置结束堆栈跟踪 --- 在 Microsoft.VisualStudio.ProjectSystem.ProjectLockService.d__128.MoveNext() --- 从之前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务) 在 Microsoft.VisualStudio.ProjectSystem.UnconfiguredProjectImpl.d__174.MoveNext() ====================

如果我使用 MVC Api 启动新解决方案,则会创建解决方案,但不会添加项目。手动将其添加到解决方案中会给我这个错误:

找不到方法:'System.Collections.Generic.LinkedListNode1 System.Collections.Generic.LinkedList1.gdt_Last()'

我尝试了什么:

修复 Visual Studio 已卸载 Visual Studio 以及与 .NET 或 Microsoft 框架有关的所有内容 谷歌搜索(未找到)

有人知道为什么会突然发生这种情况吗?

【问题讨论】:

“如果我使用 MVC Api 启动新解决方案,则会创建解决方案,但未添加项目”您是添加现有项目还是新创建的项目? @nilsK 我用新解决方案创建了一个新解决方案(启动画面 -> 创建新项目 -> 填写所有需要的字段)。然后我在解决方案资源管理器中看到解决方案名称,但没有看到项目。但是该项目是在磁盘上创建的。当我尝试将此项目添加到解决方案时,我收到了我在原始帖子中提到的错误 疯狂猜测:“未找到方法”可能是因为(VS)使用了与预期不同的框架。你have installed 是什么.Net 版本?但我希望(重新)安装 VS 会解决这个问题。 如果您使用的是 NuGet 包,请检查包格式设置(VS 菜单 => 工具 => 选项 => NuGet 包管理器 => 常规 => 包管理)。还要检查是否安装了必要的工作负载和/或单个组件(打开“Visual Studio 安装程序”,然后单击“修改”) 显然您可以安装 Visual Studio 版本的 SxS(并排)。 docs.microsoft.com/en-us/visualstudio/install/…。自己还没试过 【参考方案1】:

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

【讨论】:

【参考方案2】:

检查this solution

打开 .csproj 并删除此标签

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

【讨论】:

我的项目中没有这个目标。链接中的解决方案不是我的问题的解决方案。【参考方案3】:

这是我的 2 美分:

    如果您的项目有 NuGet 包,请正确检查并更新每个包。 我不确定您是否拥有最近版本的 .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 包时可以解决问题。

如何更改项目版本?

右键单击项目Properties --&gt; Application --&gt; Target framework。目标框架下拉列表显示您机器上安装的框架列表。如果你不想更新它,至少拿 .Net 5 并在下拉菜单中降低版本。

【讨论】:

感谢您的回复。遗憾的是,如原始帖子中所述,我无法打开我的解决方案并且项目未加载。但是,我可以编辑 csproj。我确实安装了 .NET 5.0(它一发布),以及 .NET Core 3.1(我所有的项目目前都在使用)。此解决方案不适用于我的问题。 在 csproj 文件中手动检查 nuget 包的版本

以上是关于更新 Visual Studio 2019 错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2019 中运行 python matplotlibcpp

s-s-rS Visual Studio 2015 限制

允许此预编译站点可更新 Visual Studio 2019

Visual Studio 2019 更新中断发布(不正确的 TLS 版本)

在 Visual Studio 2019 中使用的 Razor 视图未更新

Xamarin Forms - 从 2017 年到 2019 年更新 Visual Studio 后 iOS 上的奇怪行为