Visual Studio即使在项目构建时也会显示错误

我有一个问题与Visual Studio的c#解决方案。它会显示完全随机的错误,但项目会构建。现在,我有33个有错误的文件,我可以在所有文件中看到红色的弯曲线。

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

有人知道为什么会这样吗?

129865 次浏览
也许你试图重置你的智能感知缓存。在visual studio 2012中,当我在一个有许多部分类定义的大型项目中工作时,我也遇到过类似的问题。 减少部分解决了部分问题,也清除智能感知缓存-一段时间

尝试将鼠标悬停在带下划线的元素上。它通常会告诉你问题所在。要查看所有错误/警告的列表,请转到View => Error list。应该在IDE底部打开一个表,列出所有错误/警告。

如果你有ReSharper,试着清空ReSharper缓存:

在菜单中,ReSharper > Options > Environment > General > Clear cache

和禁用和重新启用ReSharper:

在菜单中,工具>选项> ReSharper > General > Suspend / Restore

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

有趣的是,在VS的2日重新启动后,暂停Resharper似乎解决了这个问题,但在我启用Resharper <之后,它又回来了——我试图这样做2-3次以确保模式。

不管怎样,当我发现这篇文章时,我仍然有问题:

  • < a href = " http://blog.galasoft。ch/posts/2014/01/ Quick -tip- What to do when- Visual - Studio -freak -out-and-everything-is-red/" rel="noreferrer">快速提示:当Visual Studio吓坏了,一切都是红色的时候该怎么做

所以我删除了隐藏的。suo文件在同一文件夹级别的解决方案,它神奇地解决了所有红色。

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

我遇到过这样的问题,智能感知似乎不能识别一个项目的存在(很多“找不到这种类型”,“这个名称空间不存在”等错误)。

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

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

<ProjectGuid>{GUID}</ProjectGuid>

在所有引用项目中。csproj文件都是项目引用:

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

引用的GUID与项目的GUID不匹配。用{ANOTHER-GUID}替换上面的{GUID}解决了这个问题,而不必通过每个引用项目。

我清洗了溶液,关闭VS,重新打开,构建溶液,未解析的红色线被清洗,构建成功。

偶尔,我不得不做一个自定义清理,通过检查所有的项目,手动删除“bin”和“obj”文件夹。要在Visual Studio中看到它们,您必须为每个项目启用隐藏文件和文件夹。完成此操作后,重新构建解决方案。

有时,如果你只是清理解决方案,错误正在消失,但他们最终可能会回来一段时间后或在下一次构建。

卸载和重新加载问题项目。

当这种情况发生在我身上时,我(习惯)尝试关闭VS并重新打开它。这可能在一半的时间里是有效的。当它不起作用时,我会关闭解决方案,删除.suo文件(或整个.vs文件夹)并重新打开解决方案。到目前为止,这对我来说总是有效的(在过去的6个月里超过10次),但它有点乏味,因为有些东西会重置,比如你的构建模式,启动项目等。

由于通常只有一个项目有问题,我只是尝试卸载该项目并重新加载它,这是有效的。我的样本容量只有1,但它比其他两个选项快得多,所以可能值得一试。(更新:我的一些同事现在也试过了,到目前为止每次都有效。)我怀疑这是可行的,因为它写入.suo文件,并可能修复了导致问题开始的损坏部分。

注意:这似乎适用于VS 2022、2019、2017和2015。

我通过删除Microsoft . net框架的临时文件解决了这个问题。 地点: C:\Windows\ Microsoft.NET \ Framework64 \ v4.0.30319 \临时ASP。网络文件 而且 C:\Windows\ Microsoft.NET \ Framework \ v4.0.30319 \临时ASP。网络文件< / p >
REM DELETE ALL VS HIDDEN SOLUTION OPTION FILES
DEL /A:H /S *.SUO

对于我的具体案例,它是另一个开发人员合并到主分支中的服务引用。除了语法高亮显示无法解析生成的服务类和源都是红色下划线之外,这是完全正常的。清理、重建、重新启动什么都没有。

我所要做的就是刷新服务引用,而VS设法在幕后将各个部分组合在一起。源代码或生成的文件没有更改。

我刚刚遇到这个问题后,恢复了一个git提交,添加文件回到我的项目。

清理和重建项目没有起作用,即使我在每一步之间关闭VS。

最终起作用的方法是将文件重命名为其他文件,然后再将其更改回来。facepalm指:

遇到这个问题,Visual Studio无法识别单个类型,即使解决方案构建成功,也会显示红色波浪。我注意到在解决方案资源管理器中,文件左边没有显示展开类和属性的展开箭头。

修复是排除该文件从项目和保存/构建产生一个预期的错误,然后包括该文件在项目和保存和构建。

执行这些步骤后,Visual Studio开始再次识别我的类型。查看git中的差异,似乎这个问题是由于我的.csproj文件的<Compile Include="..." />行上的行结束符不匹配。

0 -右键单击解决方案和清洁解决方案

1 -关闭VS

2 -删除项目的.suo文件

3 -开VS

4 -构建解决方案

我发现在Visual Studio 2017中使用Git时经常发生这种情况,在有相关代码更改的地方切换分支。即使项目将成功构建,错误列表中仍然会有错误。

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

解决:

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

在我的情况下,vs从未在项目属性>引用中保留导入的名称空间

当我试图再次添加/检查它们时,我不能和vs抛出一个错误,当保存项目vs崩溃时。当我重新打开所有标准导入的名称空间(system。数据等)都被再次勾选,然后它就能正确识别一切

在尝试了所有列出的选项后,我发现了另一个原因,为什么会发生这种情况。如果有人以zip文件的形式向你发送源代码,或者你下载了zip文件,Windows可能已经阻止了所有文件。2种解决方法:

方法1:

右键单击原始Zip文件->选中“解除封锁”->单击应用

方法2:

如果这不是一个选项,而不是打开解决方案文件夹中的每个文件的属性,只需打开power shell并使用以下方法递归地解除阻塞:

Get-ChildItem -Path 'C:\<ROOT FOLDER OF SOLUTION>\' -Recurse | Unblock-File

对于VS-2017,删除。vs文件夹对我来说很有效。

我已经尝试了所有的6个选项,没有一个对我有效。下面的解决方案解决了我的问题。

< p >关闭VS。 删除隐藏的”。Vs "文件夹,放在解决方案文件旁边。 重启VS并加载解决方案
  1. 首先关闭解决方案。
  2. 然后解决方案缓存文件删除(位置C:\Users\Documents\Visual Studio\Backup Files/项目缓存文件)
  3. 然后删除。suo文件
  4. 然后打开并构建解决方案。

我希望能解决你的问题

下面的解决方案对我很有效

1 -关闭VS

2 -删除。vs文件夹

3 -开VS

4 -构建解决方案

执行Visual Studio的干净重新安装

在浪费了几个小时后,我仍然无法修复Visual Studio 2017。然后我安装了Visual Studio 2019 PREVIEW,突然间,IntelliSense再次向我显示stl类的成员(这在Visual Studio 2017中没有)。

所以,我的猜测是Visual Studio本身可能也有问题(可能是缓存目录中的问题或在你的PC上的一般性问题,这与特定的解决方案没有直接关系),可以通过干净完整的重新安装Visual Studio来解决。我知道,这是一个愚蠢的“解决方案”,但在我的情况下,只有一个新的Visual Studio(2019)安装才有效果。

如前所述,在我的案例中,只有STL类受到影响。智能感知不会显示它们的成员,这很奇怪。我想,这可能与预编译头有关。我在某处读到,STL和项目应该在同一个驱动器上,把它们放在同一个驱动器上应该能解决问题。但这些路线都没有成功。

以下是一些流行的答案。如果答案对你有帮助,给它点赞:

选项1:清理、构建和刷新(@Mike福克斯选项)

正如@Mike福克斯提到的,尝试以下操作:

在菜单中,Build >清洁解决方案

在菜单中,Build >构建解决方案

选择有问题的项目,然后点击刷新按钮:

刷新按钮

选项2:清除,关闭,重新启动和构建(@Pixel选项)

正如@Pixel提到的,尝试以下操作序列:

  1. 清洗溶液
  2. 关闭Visual Studio
  3. Open Visual Studio
  4. 构建解决方案

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

如果你有ReSharper,试着清空ReSharper缓存:

在菜单中,ReSharper >选择比;环境比;一般比;清除缓存

和禁用和重新启用ReSharper:

在菜单中,工具>选择比;ReSharper祝辞一般比;挂起/恢复

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

正如@Neolisk提到的,删除.suo文件可能会解决你的问题。对于Visual Studio 2015,该文件位于:

[解决路径]/。vs /解决方案名称/发掘/ .suo

对于Visual Studio 2017:

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

注意,.vs目录是隐藏的。

选项5:卸载和重新加载项目(@TTT选项)

正如@TTT提到的,尝试卸载导致问题的项目:

在解决方案资源管理器中,右键单击项目,卸载项目。

然后重新载入

在解决方案资源管理器中,右键单击项目,重新加载项目。

选项6:删除并添加Microsoft。CSharp引用(@Guilherme选项)

正如@Guilherme所提到的,尝试删除并添加对"Microsoft.CSharp"从有问题的项目中。

在“解决方案资源管理器”中展开项目,展开“引用”,右键单击“Microsoft.CSharp"和删除。

然后,右键单击References >添加参考,选择“;microsoft . csharp”;,然后单击“确定”

我的一个同事今天就遇到了这个问题。我们尝试了这里的许多建议,除了下面描述的解决方案之外,没有一个有效。

问题:

项目构建正常,但智能感知无法识别某些类型,并将特定的using语句标记为无效。

解决方案:

将“解决方案平台”(在VS 2017中,这是解决方案配置下拉菜单旁边的下拉菜单,具有诸如x86, x64, AnyCPU,混合平台等值)更改为AnyCPU

项目的平台可能会有所不同,但有些参考可能并不适用于所有平台。

在工作中遇到这个问题(运行VS2017)。这里所有的答案都试过了。没有快乐。

该项目构建得很好,但抱怨找不到名称空间/类型。到处都是红色的涂鸦。“错误列表”窗口中出现大量错误。

我的解决方案包含3个项目。

发现其中一个项目的3个NuGet库引用是不正常的。 合并引用的库版本,Bingo.

希望这能帮助到一些人。

布雷特。

卸载,重新加载项目修复了这个问题。

我发现,如果被引用的项目的目标是框架的更高版本,而不是试图使用它的项目,就会发生这种情况。你可以通过进入输出窗口并寻找类似的内容来判断这是否是问题所在:

主引用“my_reference”无法解析,因为它 是基于“. net framework,Version=v4.7.2”框架构建的。这 是比当前目标框架更高的版本吗 “.NETFramework, Version = v4.7 "。< / p >

解决方案是更改一个或其他项目的目标框架。

我注意到,有时在切换git分支时,Visual Studio(2017)将无法识别在第二个分支中添加的某些文件的类型。删除.vs文件夹可以解决这个问题,但它也会破坏所有的工作空间设置。这个技巧似乎对我很管用:

  1. 解决方案资源管理器->找到其中包含未识别类的文件。
  2. 单击解决方案资源管理器顶部的“显示所有文件”。
  3. 右键单击文件-> Exclude from project。
  4. 再次右键单击文件-> Include in project。

这会导致智能感知在切换分支时解析它错过的文件。

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

删除.vs文件夹解决了我的问题。

但它也重置我的解决方案的当前设置在VS中。就像,我在解决方案中卸载的项目被重新加载,当我重新启动VS时,所有固定和打开的文档也被关闭。

我在VS2019中的症状是我会构建一些错误。然后修复错误,构建就可以工作了,如Output窗口所示。但是错误窗口仍然显示旧的错误。我可以运行得很好。关闭VS2019并重新打开解决了这个问题,但只是一段时间。这在版本16.4.3开始发生

这个解决方案似乎对我很有效:

取消勾选工具->选项->项目和解决方案->通用->允许并行项目初始化

我发现这个修复埋在这里的评论:https://developercommunity.visualstudio.com/content/problem/483450/vs-2019-intellisense-reports-compile-errors-when-r.html

有很多删除SUO /隐藏解决方案文件的答案。

就我而言,这是因为我需要以管理员身份运行Visual Studio才能发布。会用管理权限覆盖那些文件。现在,当作为标准用户运行时,我无法摆脱任何错误。

如果我重新运行在管理模式,我能够解决所有的错误。

很多事情都可能导致它,这里有一长串答案。以下是我解决这个问题的方法,在尝试了几乎所有其他方法之后。

在DEBUG模式下构建解决方案。然后在发布模式下构建它(当它有红色波浪线时,它不应该构建,但在我的情况下,它只是警告,应该有绿色波浪线,但它陷入混乱,给他们红色波浪线,即使在发布模式下,它还是构建了)。然后在DEBUG模式中构建。朝手上吐口水,转身三次可选。

对我来说很有用,其他都没用。

我已经在这个问题上挣扎了一年多,但这些解决方案都帮不了我:

  • 删除.suo
  • 删除。vs文件夹
  • 删除所有缓存/临时文件夹
  • 删除obj / bin文件夹
  • 卸载/重新加载项目

我终于修复了这个问题-我在记事本中打开vbproj/csproj文件,并注意到在ItemGroup部分中,有一个指向我的主项目dll的引用。我删除了这个参考,重新打开了我的解决方案,问题就解决了。

在我的例子中,当我在更新sdk到最新后第一次尝试使用c# 9.0编写的项目时,无论我做什么,它都会显示红线(它会构建得很好)。这里的一切我都试过了,但都没用。 最后,我意识到问题出在Resharper的语法高亮笔上。 当我更新Resharper时,所有的红色都消失了

我体验过智能感知显示不存在的分散注意力的错误,但仍然能够在Visual Studio 2019中构建和调试项目。此问题在Visual Studio 2017中没有出现。在这个问题上,我们无法导航到Visual Studio中的各种参考。

在尝试了所有发布的选项并找到这篇关于导航符号的文章后:https://stackoverflow.com/a/49100341/999011

我们的情况的解决方案与Microsoft.Net.Compilers & 在项目文件中的Microsoft.CodeDom.Providers.DotNetCompilerPlatform引用,在上面的帖子中提到过 但是,我从来没有更新过它们,我只是发现在项目文件中有多个对不同版本的引用。清理完这些后,每个包只有一个引用Microsoft.Net.Compilers & Microsoft.CodeDom.Providers.DotNetCompilerPlatform,分散注意力的红色曲线消失,导航符号开始工作

我只能推测,额外的引用是在升级期间添加的,因为我认为这个项目最初是在Visual Studio 2015中创建的。

在我的例子中,帮助了很多事情:

  1. 删除之前从项目中排除的所有旧的不需要的文件
  2. 关闭对
  3. 删除所有bin文件夹内容
  4. 删除.vs文件夹
  5. 清洁/重建
  6. 在那之后,我仍然有一些虚假的错误,但是数量显著降低(从200到8左右),并且错误仅引用Generic.xaml中的资源字典路径,例如<ResourceDicitonary Source="example/path/somefile.xaml">,当我尝试将路径更改为错误的路径时,重新构建,然后纠正它,再次重建,然后这最终清除了所有错误。如果相关的话,它是专门的WPF项目。