即使项目已构建,Visual Studio仍会显示错误

342

我在C#解决方案中使用Visual Studio时遇到了问题。它会显示完全随机的错误,但项目构建正常。现在,我有33个文件显示错误,并且所有这些文件都有红色波浪线。

我尝试过清理/重建解决方案、关闭Visual Studio甚至重新启动计算机。我可以修改.cs文件并在解决方案中看到更改。

有人知道为什么会出现这种情况吗?


4
你是否安装了ReSharper或类似的插件?它们也可能会导致出现红色波浪线。 - user1908061
4
尝试删除每个项目的 bin 和 obj 文件夹。 - Charlie Brown
错误还是警告?如果项目能够构建,那么这些就是警告。禁用所有插件,看看情况如何。 - Ehsan
我们在两台安装了VS 2013 RC候选版的机器上遇到了同样的问题,但没有安装Resharper。问题在于,尽管可以成功构建,但由于无法“解析”命名空间和对象,因此无法使用智能感知。真的很奇怪。在其他5台机器上完美运行。 - Ryk
查理布朗的答案赞一个。VS2010检测到错误,但并没有阻止构建或其他任何操作; 清除bin和obj文件夹可以解决所有问题。 - Kyle Baran
显示剩余4条评论
39个回答

345
如果您有ReSharper,请尝试清空ReSharper缓存:

在菜单中,选择 ReSharper > Options > Environment > General > Clear Caches

然后禁用并重新启用ReSharper:

在菜单中,选择 Tools > Options > ReSharper > General > Suspend / Restore


1
这对我有用。我尝试删除.vs文件夹和所有bin和obj文件夹。最终在VS2022中清除Resharper缓存才解决了问题。 - Emma Middlebrook
@Emma Middlebrook 我在 Visual Studio 2022 中尝试了这个,但它没有起作用。只有从我的电脑中删除 .NET 7 才能解决问题。Resharper 2022.2.4 - Natrium

232

清除Resharper缓存在我的情况下没有帮助,尝试了暂停/恢复,还修复了Resharper,使用JetBrains网站上的最新下载 - 这些都没有帮助。这是在我尝试关闭/重新打开VS、重启我的机器、重复、构建/重建和各种组合之后。

有趣的是,在第二次重启VS之后,暂停Resharper似乎解决了问题,但启用Resharper后问题又出现了 <-- 我尝试了2-3次这个序列以确保模式。

无论如何,在我发现这篇文章之前,我仍然存在问题:

所以我删除了与解决方案相同级别的文件夹中的隐藏的.SUO文件,神奇地解决了所有问题。

注意 - 对于Visual Studio 2015,.SUO文件位于.vs/[solution_name]/v14隐藏文件夹中。


7
Resharper的步骤对我也不起作用,但这个方法有效。谢谢! - Justin Morgan
4
你的解决方案让我解决了问题,在重新启动Visual Studio后。谢谢! :) - Moulde
1
VS2015 - 我甚至有一个项目无法构建,但我可以从错误中看出它应该可以。我不需要关闭VS。只需关闭解决方案,删除.suo文件,然后重新打开解决方案即可解决问题。 - TTT
13
仍然可以在VS2019中使用,谢谢!那里的.suo文件位于**.vs/[解决方案名称]/v16.** - Michael Armes
6
在VS2019中,我删除了.vs目录,然后在下一次构建时它被重新创建了——虚假错误已消失。 - Loren Pechtel
显示剩余2条评论

163

简而言之: 卸载并重新加载出现问题的项目。

当我遇到这种情况时,我(过去)会尝试关闭 VS 并重新打开它。这样做可能有一半的成功率。如果不起作用,我会关闭解决方案,删除 .suo 文件(或整个 .vs 文件夹)并重新打开解决方案。到目前为止,这种方法在我身上始终有效(在过去6个月中超过10次),但是有点繁琐,因为一些设置将被重置,例如您的构建模式、启动项目等。

由于通常只有一个项目出现问题,我尝试卸载该项目并重新加载它,这个方法有效。我的样本量仅为1,但比其他两个选项快得多,所以也许值得尝试。(更新:我的一些同事现在也尝试了这种方法,迄今为止它每次都能正常工作。)我认为这种方法有效是因为它会写入 .suo 文件,也许可以修复导致问题的损坏部分。

注意:此方法适用于 VS 2022、2019、2017 和 2015。


13
“我刚刚尝试了卸载该项目并重新加载它,这个方法起作用了。”我感觉自己像在做一种货物崇拜,但最终通过多次加载和卸载(期间进行了随机清理和构建),终于找到了解决方法。这真是太奇怪了。这是在使用VS 2017时发生的事情。 - ruffin
2
@ruffin - 嘿嘿。我认为对于这个问题的每一个答案都是“货物崇拜”,但我相信我的方法是最快速和最少干扰的。;) - TTT
2
在使用带有ReSharper的VS 2017 Community时,我通过删除整个.vs文件夹来解决问题。 - Pedro Martins Timóteo da Costa
3
在我的情况下,卸载和重新安装也在 VS 2019 CE 中起作用。 - simonlchilds
1
在不使用 ReSharper 的情况下,卸载并重新加载在 VS 2019 中工作的所有项目对我很有效。 - Brendan Sluke
显示剩余5条评论

50

我清理了解决方案,关闭了VS,重新打开它,构建解决方案,未解决的行已被清理,构建成功。


2
这些步骤我严格按照执行,对我很有效。仅仅清理和构建并不能解决我的问题。 - JasonCoder
2
关掉它,然后再打开……你认为我现在应该知道要尝试这个了。+1 - iandisme
2
我一点儿都不知道。我觉得Visual Studio是我用过的最不稳定的IDE。它总是卡住,经常崩溃,还会偶尔出现奇怪的错误。说实话,我已经停止计算问题了。 - pixel
显然,这是你应该尝试的第一件事。如果修复问题像这样简单,我就不会去谷歌搜索它了。 - BrainSlugs83
你的回答再次在几个月后节省了我的时间:P - Aneeq Azam Khan
显示剩余3条评论

50

我发现在使用Visual Studio 2017中Git时,切换依赖代码更改的分支时经常会发生这种情况。尽管项目能够成功构建,但是会在错误列表中仍然存在错误。

这些错误通常是命名空间问题和缺少引用,即使库引用存在。

解决方法:

  • 关闭Visual Studio
  • 删除{sln-root}.vs\SlnName\v15.suo文件(隐藏文件)
  • 重新启动Visual Studio

感谢这个提示。它解决了我们在没有任何更新的情况下使用VS 2017时的一个问题。顺便说一句,这发生在我们删除并签出一个在远程已经被重新设立基线的分支后。 - Mike Atkisson
4
尽管这个解决方案没有修复我的问题,但我认为这个问题是在我切换分支时还有未提交的更改(因为我需要将它们应用到另一个分支)后开始出现的。 - CularBytes
这正是我的问题。谢谢你,我的救星。 - Dinh Tran
@CularBytes 在切换分支之前,将更改存储起来可能是值得的。git stash,切换分支,git stash pop - Rebecca
这个实际上起作用了。 - RonaldPaguay

27

我已经尝试了所有6个选项,但都没有解决我的问题。以下解决方案解决了我的问题。

关闭VS。 删除解决方案文件旁边的隐藏“.vs”文件夹。 重新启动VS并加载解决方案。


似乎这个问题有了新的原因,而这是解决这个问题的新方法。我认识另外三个人,在你发布这篇文章的几天内也突然遇到了这个问题。 - Gerrie Pretorius
不得不像Moshi一样做。从VS 2019运行时似乎没有.suo文件。人们本以为他们现在会修复这个问题... 咕哝咕哝咕哝 - Mike Loux
2
@MikeLoux 看看 Neolisk 的回答,你会发现他指出 .suo 文件现在在 .vs 文件夹中,所以你只需要删除那个文件,而不是整个文件夹。虽然这也不是特别令人满意! - Avrohom Yisroel
每当VS开始表现奇怪时,这个方法对我来说99%的时间都有效。 - grahamesd
我有最新的VS 2019专业版16.8.6,但偶尔仍会出现虚假的智能感知错误。这个答案解决了我的问题。不确定它是否会再次发生。 - Charlie
显示剩余2条评论

21
以下是常见解决方案的集合。如果有帮助,请为答案的 OP 投票:
选项 1:清理、构建和刷新(@Mike Fuchs 的选项)
@Mike Fuchs 所提到的,请尝试以下操作:
在菜单中,选择“生成”>“清理解决方案”
然后
在菜单中,选择“生成”>“生成解决方案”
并选择相关项目,点击刷新按钮:

Refresh Button

选项2:清理、关闭、重启和构建(@Pixel选项)

@Pixel所述,请尝试以下操作序列:

  1. 清理解决方案
  2. 关闭Visual Studio
  3. 打开Visual Studio
  4. 构建解决方案

选项3:清除ReSharper缓存(@GammaOmega选项)

如果您使用ReSharper,请尝试清空ReSharper缓存:

在菜单中,选择ReSharper > 选项 > 环境 > 通用 > 清除缓存

并禁用/重新启用ReSharper:

在菜单中,选择工具 > 选项 > ReSharper > 通用 > 暂停/恢复

选项4:删除.suo文件(@Neolisk选项)

@Neolisk所述,删除.suo文件可能会解决您的问题。对于Visual Studio 2015,该文件位于:

[解决方案路径]/.vs/[解决方案名称]/v14/.suo

对于Visual Studio 2017:

[解决方案路径]/.vs/[解决方案名称]/v15/.suo
请注意,.vs目录是隐藏的。
选项5:卸载和重新加载项目(@TTT选项)
正如@TTT所提到的,尝试卸载引起问题的项目:
在“解决方案资源管理器”中,右键单击项目,选择“卸载项目”。
然后重新加载它
在“解决方案资源管理器”中,右键单击项目,选择“重新加载项目”。
选项6:删除并添加Microsoft.CSharp引用(@Guilherme选项)
正如@Guilherme所提到的,尝试从有问题的项目中删除并添加对“Microsoft.CSharp”的引用。
在“解决方案资源管理器”中,展开项目,展开“引用”,右键单击“Microsoft.CSharp”并删除。
然后,右键单击“引用”>“添加引用”,从列表中选择“Microsoft.CSharp”,然后单击“确定”。

选项6完成了。必须点击@Guilherme的链接才能投票,因为它现在在另一个问题中。 - gbarry
以上方法都不适用于我,因为我的解决方案中有80多个项目。 - Efe
Resharper的“清除缓存”功能在C++中为我解决了问题,谢谢。 - Cypher

17

删除隐藏的文件路径= 你的解决方案\ .vs\ 你的解决方案名称 \v15\ .suo


1
对我也起作用了。VS 2019。WPF项目一直显示控件不存在的错误,但实际上运行得很好。 - Flemming Bonde Kentved
啊,问题解决了。绿色的波浪线提示是来自VS而不是ReSharper。我的头文件中有一个绿色下划线提示,指出找不到例如“CheckForErrors”的定义,即使我已经完全重命名了头文件和cpp实现(警告仍然在寻找“CheckForErrors”,即使它在我的解决方案中完全不存在)。感谢ReSharper,这是VS的问题。 - bunkerdive

13

我曾经遇到过类似的问题,Intellisense似乎无法识别一个项目的存在(出现了许多“找不到此类型”,“此命名空间不存在”等错误)。

在所有引用该项目的项目中删除并重新添加项目引用可以解决问题,但是可以通过编辑有问题的项目的.proj文件来解决根本原因。

在“缺失”的项目的.csproj文件的顶部附近有一个元素:

<ProjectGuid>{GUID}</ProjectGuid>

在所有引用的项目中,.csproj文件都是项目引用:

<ProjectReference Include="..\OffendingProject\OffendingProject.csproj">
  <Project>{ANOTHER-GUID}</Project>
  <Name>Offending Project</Name>
</ProjectReference>

参考GUID与项目GUID不匹配。将上面的{GUID}替换为{ANOTHER-GUID}即可解决问题,而无需处理每个引用项目。


即使它是一个NuGet包,这对我很有效。我确保在.csproj文件中路径保持相对不变(在TFS DIFF中实际上没有任何更改),但这使得VS2017不再抱怨不存在的错误。 - BrainSlugs83
1
我只需要重新添加一个项目引用,所有问题引用都得到了刷新。 - robaudas
没有其他的解决方案适用于我,但这个方法确实解决了我的问题 :) - Pablo Carrasco Hernández

10

有很多因素可能会导致这个问题,正如在这里列出的答案列表所示。以下是我尝试了几乎所有其他方法后最终解决它的方法。

以DEBUG模式构建您的解决方案。然后以RELEASE模式构建它(当它有红色波浪线时不应该构建,但在我的情况下,它只是警告应该有绿色波浪线,但它搞混了并给它们红色波浪线,即使在发布模式下也会构建)。然后再次以DEBUG模式构建。额外的动作包括吐口水并转三圈。

对我有效,当其他方法都无效时。


哇!这对我也有效,使用最新版本的VS2017 v15.9.30 :D 非常快速和简单 :) 祝福你@Jinlye - Zeek2

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