2012-01-19 117 views
4

我在源代碼中設置了斷點,但它會讓我警告源代碼與原始代碼不同。它不會命中breakpoint.Hit位置以允許更改源代碼。任何人都可以解釋我是否是問題?在Visual Studio 2010中調試源代碼時給出的警告

+0

您是否使用AOP框架?即PostSharp? – MattDavey

+1

winform框架,但它再次被包裝在我們自己的formframework中 –

+0

清理代碼但仍存在問題構建模塊時源文件不同。模塊是dll文件。它問你是否希望調試器使用它?是或否? –

回答

4

源代碼文件的校驗和與PDB文件中的校驗和不匹配。

解決方案重建解決方案。

解決方法:在斷點檢查的位置屬性Allow source code to be different

2

執行構建 - >清理解決方案,然後構建 - >構建解決方案。然後再次嘗試調試,確保活動配置是調試。

2

你的源代碼是不一樣的編譯時間。您可以停止,清理並重建您的項目。

3

當編譯&運行發佈版本時,可能會發生這種情況。在發佈版本的編譯器,使可能更改或刪除部分代碼,藉此例如優化:

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

    Console.WriteLine("Foo"); 
} 

如果你編譯&運行,在調試版本的代碼,該斷點被觸發如常。在發佈版本中,編譯器會看到'x'從不使用,並且會「優化」整個行,這意味着斷點永遠不會被擊中!

+0

+1很酷,清晰的示例以獲得跨越 –

1

我有一個解決方案中的類庫和另一個解決方案中的Web項目時出現此問題。在逐步瀏覽web解決方案中的代碼時,它進入了我的類庫。這導致在我的web解決方案中打開類庫文件。

我在我的類庫中更改了一些代碼時發生了問題。正常情況下,我按照正確的順序構建了兩個項目。但是,我會收到消息說源代碼是不同的。這是因爲我的網絡解決方案中的類文件仍舊打開,因爲以下選項已關閉

選項>環境>檢測時,文件被環境

關閉在我的web項目中的類文件之外的改變解決我的問題。我現在正在改變這個選擇。

希望這可以幫助別人。

0

以上建議在運行單元測試時不適用於我 - 我正在執行整個解決方案的清理和重建,但DLL和PDB文件沒有在〜\ UnitTests \ bin \ Debug目錄中被刪除,所以我必須手動刪除這些文件,然後右鍵單擊UnitTests目錄並選擇「Build」。

請注意,在我的情況下,我正在使用Visual Studio 2013與更新3。

UPDATE:

結束了創建一個批處理文件來清理並生成我的解決方案,以便Visual Studio不正確留有一定的項目,而不必重建他們:

msbuild.exe "MyClassLibrary\MyClassLibrary.csproj" /t:Rebuild /p:Configuration=Debug 
msbuild.exe "UnitTests\UnitTests.csproj" /t:Rebuild /p:Configuration=Debug 
相關問題