7

Visual Studio 2015で.NET 4.0アプリケーションをデバッグしています。アプリケーションがビルドされて正常に動作しますが、デバッガで実行中に編集して続行しようとするとどのような変更を行ったのか、私の主なプロジェクトのどこに行ったのかにかかわらず、ダイアログボックスが表示されます:エラーCS7038(モジュールを発行できませんでした)編集時および継続中

コンパイルできない編集が行われました。コンパイラのエラーが修正されるまで、実行は続行できません。

Console.WriteLine("foo"); 

私は、Visual Studioのエラー一覧ペインに見ると、私は次を参照してください。私は、様々な方法で、この行を追加しようとした、話している変更の種類の例として

「モジュールを発行できませんでした」という記述を含む1つのエラーCS7038 <my app name> 'ファイル名、行番号、または文字は指定されていません。私のコードには、ぼんやりとした赤い下線はありません。実行中のアプリケーションを停止し、変更を加えてビルドして再実行すると、すべてがビルドされて正常に動作します。したがって、ビルド時コンパイラとエディットアンドコンプリートコンパイラが受け入れ可能と考えるものには、いくつかの相違があるようです。

についてもっと知りたい方は、誰でも知っていますか?編集と継続モードでコンパイルが失敗するのはなぜですか?私はVBCSCompilerプロセスへのアタッチとデバッグについて何かを読んでいたので、それを試みましたが、スローされたすべての例外タイプが破損したとしても、接続されたVSは決して壊れませんでした。

これは私のコードに関する質問ではなく、編集と継続のコンパイラが間違っていると思うものを見つけるための戦略であり、コンパイラのエラーの原因を知ることができます私のプロジェクト全体のどこにいてもかまいません。

編集:

コメントで述べたように、私は、Visual Studioにデバッガをアタッチして例外がコードを編集した後、「続行」をクリックするとスローされたときに破ることができました。例外はSystem.NotSupportedExceptionで、「デバッグ中にアセンブリ参照のバージョンを変更できません」というメッセージが表示されます。それは問題のアセンブリの名前を列挙しました。これは、アプリケーションで使用される小さなVB.Netプロジェクトでした。これは主にC#で使用されています。マイクロソフトに提出するMCVEを構築しようとしていますが、現在のところ、1つのVBと1つのC#プロジェクトで問題を再現することはできません。

編集2:

誰が今までこの奇妙な問題が発生した場合には、私は回避策と自己回答質問を見つけたが、私はすることができます誰のため「と答えた」のチェックマークを予約しています何が起きているのか(なぜなら、編集中に参照プロジェクトのバージョン番号が変更されたとコンパイラが判断した理由)。

+0

VSのすべてのインスタンスを強制終了して再起動しましたか? VS設定をリセットしましたか?もしそうでなければ、私はそこから始めるだろう。 – David

+0

私はVSを再起動しました。 VS設定をリセットしていない、恐ろしい音。あなたの設定を保存して、問題が解決しない場合に元に戻す方法はありますか? – adv12

+0

はい。 [ツール] - > [設定のインポートとエクスポート]を選択します。そこから、現在の設定(エクスポート)を保存したり、古い設定をリロードしたり(インポート)、またはすべてをリセットすることができます。 [すべてリセット]を選択すると、現在の設定を最初にエクスポートするかどうかを尋ねるメッセージが表示されます(推奨)。 – David

答えて

2

問題の回避策が見つかりましたが、何が起こっているのか十分に理解していません。編集と継続のコンパイラが言っていたアセンブリバージョンのVB.NETプロジェクトには、 "AssemblyInfo.vb"というファイルがありました。[アプリケーション]タブで「アセンブリ情報」ボタンを経由して、アセンブリのバージョンはまた、プロジェクトのプロパティで設定することができます

<Assembly: AssemblyVersion("3.0.*")> 

:このファイルには、次の行が含まれてい

screenshot of Visual Studio's Project Properties for the VB.NET project with AssemblyVersion set in two places

私は削除AssemblyInfo.vbのAssemblyVersion行、編集と継続の問題が解決しました。最初は、アセンブリ情報ウィンドウのフィールドがAssemblyInfo.vbとは別のファイルに保存されていて、2つの間にいくつかの競合があったためだと思っていましたが、アセンブリ情報ウィンドウはAssemblyInfoを編集する便利な方法です.vb:AssemblyInfo.vbの行を削除すると、Assembly Informationウィンドウでその行が消去されます。

もう少し実験した後、バージョン番号のアスタリスクが原因であるようです。アセンブリバージョンを完全に指定すると、編集と続行の問題が解消されます。また、参照されるプロジェクトはVB.NETプロジェクトでなければなりません。私はC#プロジェクトで同じ設定を試してみましたが、編集して続行できました。

これは非常に重要なケースで、Microsoftにバグレポートを提出しますが、その間に実際にコンパイラで何が起こっているのかを知りたいのですが、なぜ2つの異なるデバッグ中に再コンパイルする必要のないアセンブリーのアセンブリー・バージョン....何が起こっているかについての良い説明があれば、答えとして追加してください。

here's the bug report I filedを編集します。

+0

明らかに、あなたのバグレポートは削除されました::-( – Heinzi

関連する問題