2012-01-19 55 views
4

ソースコードにブレークポイントを設定しましたが、ソースコードが元のものと異なることが警告されます。ブレークポイントをヒットしません。ソースコードの変更を許可する場所。誰も私を説明することができますwaht問題ですか?Visual Studio 2010のソースコードをデバッグする際の警告

+0

あなたはどんなAOPフレームワークを使用していますか?すなわちPostSharp? – MattDavey

+1

winformフレームワークですが、私たち独自のformframeworkで再びラップされています –

+0

コードを消去しても問題は解決しましたモジュールがビルドされたときにソースファイルが異なります。モジュールはdllファイルです。とにかくそれを使用するデバッガをお願いしますか?はい、もしくは、いいえ? –

答えて

4

ソースコードファイルのチェックサムがPDBファイルのチェックサムと一致しません。

これを解決するには、ソリューションを再構築します。

回避策:ブレークポイントのチェックAllow source code to be different

2

ビルド - >クリーンソリューション、ビルド - >ビルドソリューションを実行します。次に、デバッグを再試行し、アクティブな設定がデバッグであることを確認します。

2

あなたのソースコードのLocationプロパティでは、時間のコンパイルのと同じではありません。あなたは、あなたのプロジェクトを停止し、きれいにし、再構築することができます。

3

これは、リリースビルドを実行する&をコンパイルするときに発生します。リリースでは、コンパイラは、コードの一部を変更したり、削除することが最適化は、この例を取る作る構築します

static void Main() 
{ 
    int x = 10 + 5; // <---- BREAKPOINT HERE 

    Console.WriteLine("Foo"); 
} 

あなたはデバッグビルドで&実行するコードをコンパイルする場合、ブレークポイントは、いつものようにヒットします。リリースビルドでは、コンパイラは 'x'が決して使用されないことを知り、ライン全体を "最適化"します。つまり、ブレークポイントは決して打撃を受けません!

+0

+1を実行します。 –

1

1つのソリューションでクラスライブラリを使用し、別のソリューションでWebプロジェクトを使用していたときに、この問題が発生しました。 Webソリューションのコードをステップ実行しながら、クラスライブラリに足を踏み入れました。これにより、クラスライブラリファイルがWebソリューションで開かれました。

クラスライブラリのコードを変更したときに問題が発生しました。通常どおり、両方のプロジェクトを正しい順序でビルドしました。しかし、私は、ソースコードが異なっているというメッセージを得るでしょう。これは、私のウェブソリューションでまだ開いているクラスファイルの古い「ビュー」を持っていたためです。は、次のオプションがオフになっているためにになっています。

オプション>環境>ファイルは環境の外に変更されたときに検出し、私のWebプロジェクトにクラスファイルを閉じる

は私の問題を解決しました。私は今、そのオプションを変更しています。

これは誰かを助けることを望みます。

0

単体テストを実行しているときに上記の提案がうまくいかず、解決策全体をクリーンで再構築していましたが、DLLファイルとPDBファイルは〜\ UnitTests \ bin \ Debugディレクトリで削除されませんでした手動でこれらのファイルを削除してから、UnitTestsディレクトリを右クリックして[ビルド]を選択する必要がありました。

私の場合は、更新プログラム3でVisual Studio 2013を使用しています。

UPDATE:Visual Studioが間違ってそれらを再構築することなく、特定のプロジェクトを残さないように、私の解決策をきれいにし、構築するために、バッチファイルを作成することになった

msbuild.exe "MyClassLibrary\MyClassLibrary.csproj" /t:Rebuild /p:Configuration=Debug 
msbuild.exe "UnitTests\UnitTests.csproj" /t:Rebuild /p:Configuration=Debug 
関連する問題