簡體   English   中英

即使項目生成,Visual Studio 也會顯示錯誤

[英]Visual Studio displaying errors even if projects build

我在 C# 解決方案上遇到了 Visual Studio 的問題。 它顯示完全隨機的錯誤,但項目構建。 現在,我有 33 個有錯誤的文件,我可以在所有文件中看到紅色的波浪線。

我嘗試清理/重建解決方案,關閉 Visual Studio,甚至重新啟動計算機。 我可以修改 .cs 文件並看到解決方案中的更改。

有誰知道它為什么這樣做?

如果您有 ReSharper,請嘗試清空 ReSharper 緩存:

在菜單中,ReSharper > 選項 > 環境 > 常規 > 清除緩存

並禁用和重新啟用 ReSharper:

在菜單中,工具 > 選項 > ReSharper > 常規 > 暫停/恢復

清除 Resharper 的緩存在我的情況下沒有幫助,嘗試了暫停/恢復,以及修復 Resharper,使用 JetBrains 網站上的最新下載 - 這些都沒有幫助。 這是在我嘗試關閉/重新打開 VS、重新啟動我的機器、重復、構建/重建及其組合之后。

有趣的是,在 VS 的第二次重新啟動后暫停 Resharper 似乎解決了問題,但在我啟用 Resharper <--我嘗試執行此序列 2-3 次以確保模式后它又回來了。

無論如何,當我找到這篇文章時,我仍然遇到問題:

所以我用解決方案刪除了​​同一文件夾級別的隱藏.SUO文件,它神奇地解決了所有紅色。

注意 - 對於 Visual Studio 2015, .SUO文件位於.vs/[solution_name]/v14隱藏文件夾中。

tldr; 卸載並重新加載問題項目。

當這種情況發生在我身上時,我(曾經)嘗試關閉 VS 並重新打開它。 這可能工作了大約一半的時間。 當它不起作用時,我會關閉解決方案,刪除 .suo 文件(或整個 .vs 文件夾)並重新打開解決方案。 到目前為止,這一直對我有用(在過去 6 個月中超過 10 次),但這有點乏味,因為有些事情會被重置,比如你的構建模式、啟動項目等。

由於通常只有一個項目有問題,我只是嘗試卸載該項目並重新加載它,這很有效。 我的樣本量只有 1,但它比其他兩個選項快得多,所以也許值得一試。 更新:我的一些同事現在也嘗試過這個,到目前為止它每次都有效。)我懷疑這是有效的,因為它寫入 .suo 文件,並且可能修復了導致問題的損壞部分首先。

注意:這似乎適用於 VS 2022、2019、2017 和 2015。

我清理了解決方案,關閉了 VS,重新打開它,構建解決方案,紅色未解決的行被清理並構建成功。

我發現在 Visual Studio 2017 中使用 Git 時經常發生這種情況,切換存在依賴代碼更改的分支 即使項目將成功構建,錯誤列表中仍會存在錯誤。

這些錯誤通常是命名空間問題和缺少引用,即使庫引用存在。

解決:

  • 關閉 Visual Studio
  • 刪除 {sln-root}.vs\SlnName\v15.suo 文件(隱藏)
  • 重新啟動 Visual Studio

我已經嘗試了所有 6 個選項,但對我沒有任何作用。 以下解決方案解決了我的問題。

關閉VS。 刪除解決方案文件旁邊的隱藏“.vs”文件夾。 重新啟動 VS 並加載解決方案。

這是流行答案的集合。 如果對您有幫助,請支持答案的 OP:

選項 1:清理、構建和刷新( @Mike Fuchs選項)

正如@Mike Fuchs提到的,嘗試以下操作:

在菜單中,構建 > 清潔解決方案

在菜單中,構建 > 構建解決方案

並選擇有問題的項目,然后單擊刷新按鈕:

刷新按鈕

選項 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”並單擊“確定”

刪除隱藏文件路徑=你的解決方案\.vs\你的解決方案名稱\v15\.suo

我遇到了這樣的問題,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}可以解決問題,而無需遍歷每個引用項目。

很多事情都可能導致它,正如這里一長串的答案所證明的那樣。 這是為我解決的問題,首先嘗試了幾乎所有其他內容。

在調試模式下構建您的解決方案。 然后在 RELEASE 模式下構建它(當它有紅色波浪線時它不應該構建,但在我的情況下,它只是應該有綠色波浪線的警告,但它陷入混亂並給它們紅色波浪線,它即使在發布模式下也無論如何構建)。 然后在 DEBUG 模式下構建。 吐在你的手上,轉三圈可選。

為我工作,當沒有其他事情時。

對於 VS-2017,刪除 .vs 文件夾對我有用。

我注意到有時在切換 git 分支時,Visual Studio (2017) 無法識別已添加到第二個分支中的某些文件的類型。 刪除 .vs 文件夾可以解決問題,但也會破壞所有工作區設置。 這個技巧似乎對我很有效:

  1. 解決方案資源管理器 -> 找到其中包含無法識別的類的文件。
  2. 單擊解決方案資源管理器頂部的顯示所有文件。
  3. 右鍵單擊文件-> 從項目中排除。
  4. 再次右鍵單擊該文件 -> 包含在項目中。

這會導致 Intellisense 解析它在切換分支時丟失的文件。

有時我必須通過瀏覽所有項目並手動刪除“bin”和“obj”文件夾來進行自定義清理。 要在 Visual Studio 中查看它們,您必須為每個項目啟用隱藏文件和文件夾。 完成后,重建解決方案。

以下解決方案對我有用

1 - 關閉 VS

2 - 刪除 .vs 文件夾

3 - 打開VS

4 - 構建解決方案

也許您嘗試重置智能感知緩存。 在處理具有許多部分類定義的大型項目時,我在 Visual Studio 2012 中遇到了類似的問題。 減少部分部分解決了問題,同時也清除了智能感知緩存 - 一段時間。

刪除.vs文件夾解決了我的問題。

但它也重置了我的解決方案在 VS 中的當前設置 就像,我在解決方案中卸載的項目被重新加載,當我重新啟動 VS 時,所有固定和打開的文檔也被關閉。

我在 VS2019 中的症狀是構建時會出現一些錯誤。 然后我會修復錯誤,構建就會工作,如“輸出”窗口中所示。 但是錯誤窗口仍然顯示舊錯誤。 我可以很好地運行它。 關閉 VS2019 並重新打開解決了這個問題,但只是一小會兒。 這開始發生在版本 16.4.3

這個解決方案似乎對我有用:

取消選中工具->選項->項目和解決方案->常規->允許並行項目初始化

我發現此修復程序隱藏在此處的評論中: https ://developercommunity.visualstudio.com/content/problem/483450/vs-2019-intellisense-reports-compile-errors-when-r.html

0 - 右鍵單擊​​解決方案並清理解決方案

1 - 關閉 VS

2 - 刪除項目的 .suo 文件

3 - 打開VS

4 - 構建解決方案

我的一個同事今天遇到了這個問題。 我們在這里嘗試了許多建議,但除了下面描述的解決方案外,沒有一個有效。

問題:

項目構建良好,但 Intellisense 無法識別某些類型並將特定using語句標記為無效。

解決方案:

將“解決方案平台”(在 VS 2017 中,這是解決方案配置下拉列表旁邊的下拉列表,具有 x86、x64、AnyCPU、混合平台等值)為AnyCPU

您的項目的平台可能會有所不同,但似乎某些參考可能不適用於所有平台。

在我的情況下,幫助了一些事情:

  1. 刪除以前從項目中排除的所有不需要的舊文件
  2. 關閉VS
  3. 刪除所有bin文件夾內容
  4. 刪除.vs文件夾
  5. 清理/重建
  6. 之后我仍然有一些虛假錯誤,但是數量明顯降低(從 200 到大約 8),並且錯誤僅涉及Generic.xaml中的資源字典路徑,例如<ResourceDicitonary Source="example/path/somefile.xaml">當我嘗試將路徑更改為錯誤的路徑並重新構建然后更正並再次重建時,這最終清除了所有錯誤。 如果相關的話,它是專門的 WPF 項目。

對於我的具體情況,它是另一個開發人員合並到主分支的服務引用。 除了語法高亮無法解析生成的服務類和源代碼都帶有紅色下划線之外,這非常好。 清潔,重建,重新啟動什么也沒做。

我所要做的就是刷新服務參考,VS 設法在幕后將各個部分組合在一起。 源代碼或生成的文件沒有變化。

在恢復將文件添加回我的項目的 git 提交后,我剛剛遇到了這個問題。

即使我在每個步驟之間關閉了 VS,清理和重建項目也不起作用。

最終起作用的是,將文件重命名為其他名稱並再次將其更改回來。 :facepalm:

在嘗試了所有列出的選項后,我發現了另一個原因。 如果有人以 zip 格式向您發送源代碼,或者您下載了 zip,則 Windows 可能已阻止所有文件。 解決此問題的2種方法:

方法一:

右鍵單擊原始 Zip 文件 -> 選中“取消阻止”-> 單擊應用

方法二:

如果這不是一個選項,而不是打開解決方案文件夾中每個文件的屬性,只需打開 power shell 並使用以下命令遞歸地解除阻塞:

Get-ChildItem -Path 'C:\<ROOT FOLDER OF SOLUTION>\' -Recurse | Unblock-File
  1. 首先關閉解決方案。
  2. 然后解決方案緩存文件刪除(在位置 C:\Users\Documents\Visual Studio\Backup Files/project 緩存文件)
  3. 然后 .suo 文件刪除
  4. 然后解決方案打開並構建。

希望能解決你的問題

在工作中遇到了這個問題(運行 VS2017)。 在這里嘗試了所有答案。 沒有喜悅。

該項目將構建得很好,但抱怨找不到命名空間/類型。 到處都是紅色的波浪線。 錯誤列表窗口中有很多錯誤。

我的解決方案包含 3 個項目。

發現其中一個項目的 3 個 NuGet 庫引用不符合要求。 合並了引用的庫版本和 Bingo。

希望這可以幫助某人。

布雷特。

卸載並重新加載項目解決了這個問題。

我已經在這個問題上苦苦掙扎了一年多,但這些解決方案都沒有幫助我:

  • 刪除.suo
  • 刪除 .vs 文件夾
  • 刪除任何或所有緩存/臨時文件夾
  • 刪除 obj / bin 文件夾
  • 卸載/重新加載項目

我終於解決了這個問題——我在記事本中打開了 vbproj/csproj 文件,並注意到在ItemGroup部分中,有一個對我的主項目 dll 的引用。 我刪除了這個引用,重新打開了我的解決方案,問題就解決了。

有時,如果您只是清理解決方案,錯誤就會消失,但它們最終可能會在一段時間后或在下一次構建時再次出現。

遇到此問題,Visual Studio 無法識別單一類型,即使解決方案構建成功,也會顯示紅色曲線。 我注意到在解決方案資源管理器中,該文件沒有左側的展開箭頭,該箭頭顯示展開時的類和屬性。

修復是從項目中排除文件並保存/構建產生預期錯誤的文件,然后將文件包含在項目中並保存並構建。

執行這些步驟后,Visual Studio 開始再次識別我的類型。 查看 git 中的差異,問題似乎是由於我的 .csproj 文件的<Compile Include="..." />行上的行尾不匹配。

在我的情況下,vs 從未在項目屬性> 引用中保留導入的命名空間

當我嘗試再次添加/檢查它們時,我不能並且 vs 拋出一個錯誤,並且當保存的項目 vs 崩潰時。 當我重新打開所有標准導入的命名空間(system.data 等...)時,它們都再次被勾選,然后它可以識別所有內容而沒有錯誤

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 和項目應該在同一個驅動器上,並將它們放在同一個驅動器上應該可以解決問題。 但這些路線都沒有成功。

我發現如果引用的項目針對的框架版本高於嘗試使用它的項目,則可能會發生這種情況。 您可以通過轉到輸出窗口並查找與此類似的內容來判斷這是否是問題:

無法解析主要參考“my_reference”,因為它是針對“.NETFramework,Version=v4.7.2”框架構建的。 這是比當前目標框架“.NETFramework,Version=v4.7”更高的版本。

解決方案是更改其中一個或其他項目的目標框架。

刪除SUO /隱藏解決方案文件有很多答案。

就我而言,這是因為我需要以管理員身份運行 Visual Studio 才能發布。 它覆蓋了具有管理員權限的那些文件。 現在,當以標准用戶身份運行時,我無法擺脫任何錯誤。

如果我以管理員模式重新運行,我能夠解決所有錯誤。

在我的情況下,當我在將 sdk 更新到最新版本后第一次嘗試使用 C# 9.0 編寫的項目時,無論我做什么,它都會顯示紅線(它會構建得很好)。 我在這里嘗試了一切,但沒有任何效果。 最后我意識到問題出在我的 Resharper 舊版本的語法熒光筆上。 一旦我更新了 Resharper,所有的紅色都消失了。

我遇到了 IntelliSense 顯示不存在的令人分心的錯誤,但仍然能夠在 Visual Studio 2019 中構建和調試項目。Visual Studio 2017 中沒有出現此問題。除此之外,我們無法導航到各種參考在 Visual Studio 中。

在嘗試了所有發布的選項並找到有關導航符號的帖子后: https ://stackoverflow.com/a/49100341/999011

我們的情況的解決方案與上面帖子中提到的項目文件中的Microsoft.Net.CompilersMicrosoft.CodeDom.Providers.DotNetCompilerPlatform引用有關。

但是,我從未更新它們,我只是發現項目文件中有多個對不同版本的引用。 在清理完這些並為每個包Microsoft.Net.CompilersMicrosoft.CodeDom.Providers.DotNetCompilerPlatform提供一個參考后,分散注意力的紅色曲線消失了,導航符號開始工作。

我只能推測在升級過程中添加了額外的引用,因為我認為這個項目最初是在 Visual Studio 2015 中創建的。

我通過刪除 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

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

嘗試將鼠標懸停在帶下划線的元素上。 它通常應該告訴你什么問題。 要查看所有錯誤/警告的列表,請轉到查看 => 錯誤列表。 應該在 IDE 底部打開一個表,其中列出了所有錯誤/警告。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM