はじめに
VSCodeでC#のビルドタスクの実行を行ったときに、エラーや警告が2重になってコードを修正しても残ってしまう現象についてのメモ
TL;DR
tasks.json の ビルドタスクの "problemMatcher": "$msCompile"を消せばよいかも?
環境
OS:Windows10
VSCode(V1.66.0)
VSCodeのC#拡張(v1.24.3)
.NetSDK(.Net6)
現象について
たとえば以下のようなコードがあったとき、セミコロン(;)がないのでコンパイルエラーになる。
Console.WriteLine("Hello, World!")//セミコロンがない
ここでVSCodeのビルドタスクを呼び出してビルドをかけると問題が二つに増えてしまう。(デバッグの呼び出しでも)
セミコロンを入れて修正しても、片方のエラーが消えずに残ってしまう。
もう一度ビルドタスクを呼び出せば消えるけど、ちょっとうっとおしい。
解決策?
原因はデフォルトのビルドタスクの設定にある。(たぶん)
C#の拡張がtasks.jsonに作るビルドタスクの中にある"problemMatcher": "$msCompile"の設定が直前のビルドのエラーや警告を残してしまっているらしい。
とりあえずこの設定を消すか、//でコメントアウトすればエラーや警告が残らなくなる。
※全部の問題を消してから設定を変えないとエラーがずっと残り続けるので注意。(たぶん残ったエラーが更新されなくなる)
とはいえ、なんでデフォルトでこうなっているのかよくわからないし、消したことで別の問題が起きるのかはよくわかない。詳しい人がいれば教えてほしい。