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

时间:2013-07-17 14:47:40

标签: c# visual-studio syntax-error resharper intellisense

我在C#解决方案上遇到Visual Studio问题。它显示完全随机的错误,但项目构建。现在,我有33个文件有错误,我可以在所有文件中看到红色波浪线。

我尝试清理/重建解决方案,关闭Visual Studio甚至重新启动计算机。我还确保执行调试运行中描述的步骤,即使编译器在Visual Studio中有错误也是如此。我可以修改.cs文件,我看到解决方案中的更改。

有没有人知道为什么会这样做?

36 个答案:

答案 0 :(得分:303)

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

  

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

并禁用并重新启用ReSharper:

  

在菜单中,工具>选项> ReSharper>一般>暂停/恢复

答案 1 :(得分:156)

Clearing Resharper's cache在我的案例中没有帮助,尝试suspend/restore,还有修复Resharper,使用最新下载的JetBrains'网站 - 这些都没有帮助。这是在我尝试关闭/重新打开VS,重启我的机器,重复,构建/重建及其组合之后。

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

无论如何,当我发现这篇文章时,我仍然遇到问题:

所以我用解决方案删除了​​同一文件夹级别的the hidden .SUO file,它神奇地解决了所有红色。

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

答案 2 :(得分:52)

tldr; 卸载并重新加载问题项目。

当我遇到这种情况时,我(曾经)尝试关闭VS并重新打开它。这可能在大约一半的时间里起作用。当它不起作用时,我会关闭解决方案,删除.suo文件(或整个.vs文件夹)并重新打开解决方案。到目前为止,这一直对我有用(在过去的6个月内超过10次),但它有点单调乏味,因为有些东西会被重置,例如你的构建模式,启动项目等。

由于它通常只是一个有问题的项目,我只是尝试卸载该项目并重新加载它,这很有效。我的样本量只有1,但它比其他两个选项快得多,所以也许值得尝试。我怀疑这是有效的,因为它写入了.suo文件,并且可能修复了导致问题开始的损坏的部分。

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

答案 3 :(得分:33)

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

答案 4 :(得分:22)

我发现在Visual Studio 2017中使用Git时经常发生,切换存在依赖代码更改的分支。即使项目将成功构建,错误列表中仍会存在错误。

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

要解决:

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

答案 5 :(得分:11)

我有一个这样的问题,其中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}修复了问题,而无需经历每个引用项目。

答案 6 :(得分:10)

我尝试了所有6种选择,但对我没有任何帮助。下面的解决方案解决了我的问题。

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

答案 7 :(得分:5)

对于VS-2017,删除.vs文件夹对我有用。

答案 8 :(得分:4)

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

答案 9 :(得分:3)

有时我必须通过浏览所有项目并手动删除&#34; bin&#34;来进行自定义清理。和&#34; obj&#34;文件夹。要在Visual Studio中查看它们,您必须为每个项目启用隐藏文件和文件夹。完成此操作后,重建解决方案。

答案 10 :(得分:3)

以下解决方案对我有用

1-关闭VS

2-删除.vs文件夹

3-打开VS

4-构建解决方案

答案 11 :(得分:3)

这是一些热门答案的集合。如果有帮助,请对答案的OP进行投票:

选项1:清理,构建和刷新(@Mike Fuchs选项)

@Mike Fuchs所述,请尝试以下操作:

  

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

     

     

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

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

Refresh Button

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

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

  
      
  1. 清洁溶液
  2.   
  3. 关闭Visual Studio
  4.   
  5. 打开Visual Studio
  6.   
  7. 构建解决方案
  8.   

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

如果您有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”,然后单击“确定”

答案 12 :(得分:2)

也许您尝试重置智能感知缓存。我在visual studio 2012中遇到了类似的问题,当时他在一个有很多部分类定义的大型项目中工作。 减少局部问题部分地解决了问题,也清除了智能感知缓存 - 暂时。

答案 13 :(得分:1)

我的一位同事今天遇到了这个问题。我们在这里尝试了许多建议,但除了下面描述的解决方案外,其他建议均无效。

问题:

项目构建良好,但是Intellisense无法识别某些类型并将特定的using语句标记为无效。

解决方案:

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

您项目的平台可能会有所不同,但似乎有些引用可能不适用于所有平台。

答案 14 :(得分:1)

  1. 首先关闭解决方案。
  2. 然后删除解决方案缓存文件(位于C:\ Users \ Documents \ Visual Studio \ Backup Files /项目缓存文件中)
  3. 然后删除.suo文件
  4. 然后打开并构建解决方案。

我希望能解决您的问题

答案 15 :(得分:1)

已在工作中运行此问题(运行VS2017)。在这里尝试了所有答案。不高兴。

该项目可以很好地构建,但是抱怨找不到名称空间/类型。到处都是红色的花体。错误列表窗口中有很多错误。

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

发现其中一个项目的3个NuGet库引用不符合要求。 合并了引用的库版本和Bingo。

希望这对某人有帮助。

布雷特。

答案 16 :(得分:1)

卸载并重新加载项目解决了此问题。

答案 17 :(得分:1)

我注意到有时切换git分支时,Visual Studio(2017)不会从第二个分支中添加的某些文件中识别类型。删除.vs文件夹即可解决该问题,但同时也浪费了您所有的工作区设置。这个技巧似乎对我来说很有效:

  1. 解决方案资源管理器->查找其中包含无法识别的类的文件。
  2. 单击解决方案资源管理器顶部的“显示所有文件”。
  3. 右键单击文件->从项目中排除。
  4. 再次右键单击文件->包含在项目中。

这会导致Intellisense解析切换分支时丢失的文件。

答案 18 :(得分:1)

尝试了所有列出的选项之后,我发现了发生这种情况的另一个原因。如果有人将您的源代码作为zip发送给您,或者您下载了zip,则Windows可能已阻止了所有文件。解决此问题的2种方法:

方法1:

右键单击原始Zip文件->选中“取消阻止”->单击应用

方法2:

如果这不是一种选择,则无需打开解决方案文件夹中每个文件的属性,只需打开power shell并使用以下内容递归解锁即可:

{{1}}

答案 19 :(得分:1)

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

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

答案 20 :(得分:1)

0 - 右键单击​​解决方案并清理解决方案

1 - 关闭VS

2 - 删除项目的.suo文件

3 - 打开VS

4 - 构建解决方案

答案 21 :(得分:1)

我在VS2019中的症状是我会在构建时出现一些错误。然后,我将修复错误,然后构建将正常工作,如“输出”窗口中所示。但是“错误”窗口仍显示旧错误。我可以很好地运行它。关闭VS2019并反击已解决了该问题,但仅持续了一段时间。这始于版本16.4.3

此解决方案似乎对我有用:

取消选中工具->选项->项目和解决方案->常规->允许并行项目初始化

我发现此修复程序被埋在下面的注释中:https://developercommunity.visualstudio.com/content/problem/483450/vs-2019-intellisense-reports-compile-errors-when-r.html

答案 22 :(得分:1)

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

清理和重建项目不起作用,即使我在每个步骤之间关闭了VS.

最终起作用的是将文件重命名为其他内容并将其重新更改。 :捂脸:

答案 23 :(得分:1)

对于我的具体情况,它是另一个开发人员合并到主分支的服务引用。除非语法高亮无法解析生成的服务类,并且源全部用红色下划线,否则完全正常。清洁,重建,重新启动什么也没做。

我所要做的就是刷新服务参考,VS设法将各个部分组合在一起。源代码或生成的文件没有变化。

答案 24 :(得分:1)

很多原因都可能导致它,如此处的一长串答案所证明的。这是我的修复方法,首先尝试了几乎所有其他方法。

以DEBUG模式建立您的解决方案。然后在RELEASE模式下构建它(当它有红色波浪线时不应该构建,但是在我的情况下,它只是警告应该有绿色波浪线,但是它陷入了混乱,给了它们红色波浪线,即使在发布模式下也可以构建)。然后以调试模式构建。随地吐痰,并可选地转三圈。

什么也没做。

答案 25 :(得分:1)

我已经为这个问题苦苦挣扎了一年多,但这些解决方案都没有帮助我:

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

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

答案 26 :(得分:0)

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

在我的情况下,这是因为我需要以管理员身份运行Visual Studio才能进行发布。具有管理员权限覆盖那些文件。现在,以标准用户身份运行时,我无法摆脱任何错误。

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

答案 27 :(得分:0)

就我而言,当我在将 sdk 更新到最新版本后第一次尝试使用 C# 9.0 编写的项目时,无论我做什么,它都会显示红线(它会很好地构建)。我在这里尝试了一切,但没有任何效果。 最后我意识到问题出在旧版本的 Resharper 语法荧光笔上。 更新 Resharper 后,所有红色都消失了。

答案 28 :(得分:0)

我发现,如果所引用的项目针对的框架版本比尝试使用它的项目的框架版本更高,则可能会发生这种情况。您可以通过转到输出窗口并查找与此类似的内容来判断是否是问题所在:

  

主引用“ my_reference”无法解析,因为它   是针对“ .NETFramework,Version = v4.7.2”框架构建的。这个   是比当前目标框架更高的版本   “ .NETFramework,Version = v4.7”。

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

答案 29 :(得分:0)

TL; DR::执行Visual Studio的全新重新安装

浪费了几个小时之后,我仍然无法为Visual Studio 2017修复它。然后我安装了Visual Studio 2019 PREVIEW,忽然间,IntelliSense再次向我显示STL类的成员(它没有显示) Visual Studio 2017)。

所以,我的猜测是Visual Studio本身也可能有问题(可能是缓存目录中的问题,或者通常是您PC上与特定解决方案没有直接关系的某些问题)可以通过干净的方法解决并完成Visual Studio的重新安装。我知道,这是一个愚蠢的“解决方案”,但就我而言,只有全新的Visual Studio(2019)安装才有效。

如前所述,在我的案例中,仅STL类受到影响。 IntelliSense不会显示其成员,这很奇怪。我认为,这可能与预编译的标头有关。我读过某个地方,STL和项目应该在同一驱动器上,将它们放在相同的驱动器上应该可以解决问题。但是这些方法都没有成功。

答案 30 :(得分:0)

在我的案例中,vs从未在项目属性中保留导入的命名空间&gt;参考

当我尝试再次添加/检查它们时,我无法和vs抛出错误,当保存的项目与崩溃时。当我重新打开所有标准导入的命名空间(system.data等...)时,都会再次勾选,然后它会识别所有内容而不会出现错误

答案 31 :(得分:0)

使用Visual Studio无法识别的单一类型进入此问题,即使解决方案已成功构建,也会显示红色波形。我注意到在解决方案资源管理器中,文件左侧没有展开箭头,显示扩展时的类和属性。

修复方法是从项目中排除文件并保存/生成产生预期错误的文件,然后将文件包含在项目中并保存并生成。

执行这些步骤后,Visual Studio再次开始识别我的类型。看看git中的差异,看来问题是由于我的.csproj文件的<div class="field-items"> <div class="field-item"> 8 ounces sugar snap peas, stringed </div> <div class="field-item"> 12 grape tomatoes, halved </div> <div class="field-item">2 tablespoons sliced almonds</div> <div class="field-item">2 tablespoons extra-virgin olive, walnut, or almond oil</div> <div class="field-item"> 2 tablespoons fruity vinegar, such as raspberry or pomegranate </div> <div class="field-item"> ¼ teaspoon salt </div> <div class="field-item"> 1/8 teaspoon freshly ground pepper </div> <div class="field-item"> 4 cups packed mixed baby lettuce </div> <div class="field-item"> ¼ cup snipped fresh chives (½-inch pieces) </div> <div class="field-item"> ¼ cup chopped fresh tarragon </div> </div>行上的行结尾不匹配。

答案 32 :(得分:0)

有时如果您只是清理解决方案,错误就会消失,但它们可能会在一段时间或下一次构建时再次出现。

答案 33 :(得分:-1)

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

答案 34 :(得分:-2)

REM DELETE ALL VS HIDDEN SOLUTION OPTION FILES
DEL /A:H /S *.SUO

答案 35 :(得分:-2)

我通过删除Microsoft .NET框架的临时文件解决了这个问题。 地点: C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files 和 C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files