切换分支后重新加载所有项目不会重新加载项目

Reload all Projects after switching branches doesn't Reload Projects

我在包含八个 C# 项目的大型网络 API 上进行开发。通常,我会在我们的存储库中的分支之间切换以处理不同的任务。我使用 Git 扩展作为我使用 Git 的首选工具,每当我检查不同的分支时,Visual Studio 将提示我重新加载项目(如果检测到更改)。我通常 select “全部重新加载”按钮。这样做之后,我不断收到错误,这些错误似乎是由我之前所在的分支留下的更改引起的。

例如,如果我在 branchA 上,它引入了一个包含 C# class 的新文件,在另一个已经存在的文件中以某种方式引用 class,然后签出不包含这些更改的 branchB,Visual Studio 将开始生成 The type or namespace name 'name' does not exist in the namespace (are you missing an assembly reference?)。这似乎也是反过来发生的,如果我切换到一个引入新更改的分支,而不是在我以前的分支上,这些错误就会突然出现。

似乎在 select 点击“全部重新加载”按钮后,项目的 .csproj 文件没有被检测到更新。这方面的证据是解决方案资源管理器仍然显示这些文件,但上面带有红色“X”符号,表示项目希望文件存在,但它当前不存在于磁盘上。我已经确保 .csproj 文件在更改分支后确实得到更新。目前唯一对我有用的解决方案是,如果我右键单击项目并卸载然后重新加载它们,或者如果我关闭 solution/Visual Studio 并重新打开 - 两者都很乏味。

我相信这不是以前在 Visual Studio 的早期版本中看到的行为。我曾经能够在分支之间自由切换,过去没有发生过这种情况。 有什么不同步的吗?我该如何解决?

这是 Visual Studio 2019 Enterprise(版本 16.10.3)。

更新 Visual 后遇到同样的问题

16.8 version Microsoft added new Git experience 中破坏了“全部重新加载”功能。

你有两种方法来处理这个:

  1. 转到工具 → 选项 → 环境 → 预览功能。关闭选项“新 Git 用户体验。”

  1. 使用 Visual studio git 面板结帐(Git → 管理分支)。

如果您一个一个地重新加载项目而不是单击“全部重新加载”,它应该会正确地更新它们。不是解决方案,而是在修复之前稍微好一点的解决方法。

取消选中“新 Git 用户体验”对我不起作用,因此采用这种替代方法。