Visual Studio 2015 で .NET 4.0 アプリケーションをデバッグしています。アプリケーションは正常にビルドおよび実行されますが、デバッガーで実行中に編集して続行しようとすると、どのような変更を加えたか、またはメイン プロジェクトのどこでそれらを行ったかに関係なく、 、次のようなダイアログが表示されます。
コンパイルできない編集が行われました。コンパイラ エラーが修正されるまで、実行を続行できません。
私が話している種類の変更の例として、さまざまな方法で次の行を追加しようとしました。
Console.WriteLine("foo");
Visual Studio の [エラー一覧] ペインを見ると、「モジュール ' ' を発行できませんでした」という説明が付いたエラー CS7038 が 1 つだけ表示されます<my app name>
。ファイル名、行番号、または文字は指定されません。私のコードには赤い波線がありません。実行中のアプリケーションを停止し、変更を加えてビルドし、再度実行すると、すべてが正常にビルドおよび実行されます。そのため、ビルド時コンパイラとエディット コンティニュ コンパイラが許容できると見なすものの間には、多少の不一致があるようです。
エディット コンティニュ モードでコンパイルが失敗する理由に関する詳細情報を取得する方法を知っている人はいますか? VBCSCompiler プロセスへのアタッチとデバッグについて何かを読んだので、それを試してみましたが、スローされたときにすべての例外の種類が壊れるように設定されていても、アタッチされた VS が壊れることはありませんでした。
これは私のコードに関する質問ではなく、エディット コンティニュ コンパイラが間違っていると考えていることを見つけるための戦略に関するものであるため、コードを共有していません。プロジェクト全体。
編集:
コメントで述べたように、Visual Studio にデバッガーをアタッチし、コードの編集後に [続行] をクリックして例外がスローされたときにブレークすることができました。例外は、System.NotSupportedException
「デバッグ中にアセンブリ参照のバージョンを変更することはできません」というメッセージを伴うものでした。問題のアセンブリの名前がリストされていました。これは、ほとんどが C# である私のアプリケーションで使用される小さな VB.Net プロジェクトでした。Microsoft に提出する MCVE を構築しようとしていますが、現在、1 つの VB と 1 つの C# プロジェクトだけの小規模なソリューションで問題を再現することはできません。
編集2:
他の誰かがこの奇妙な問題に遭遇した場合に備えて、回避策を見つけて質問に自己回答しましたが、何が起こっているのかを説明できる人のために「回答済み」チェックマークを予約しています (なぜコンパイラがバージョン番号を編集中に参照プロジェクトが変更されました)。