簡體   English   中英

在Visual Studio 2010中調試源代碼時發出的警告

[英]Warning given when debugging source code in visual studio 2010

我在源代碼中設置了斷點,但它會告訴我源代碼與原始代碼不同。 它不會命中breakpoint.Hit位置允許更改源代碼。 任何人都可以解釋我的問題嗎?

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

解決那個重建解決方案。

解決方法:在斷點的“位置”屬性中選中“ Allow source code to be different

編譯和運行發布版本時可能會發生這種情況。 在Release版本中,編譯器進行可能更改或刪除部分代碼的優化,請參考以下示例:

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

    Console.WriteLine("Foo");
}

如果在調試版本中編譯並運行該代碼,則會像往常一樣觸發斷點。 在發布版本中,編譯器將看到“x”從未使用過,並且將“優化掉”整行,這意味着斷點永遠不會被擊中!

做一個Build - > Clean Solution,然后Build - > Build Solution。 然后再次嘗試調試,確保活動配置是調試。

您的源代碼與編譯時不同。 您可以停止,清理和重建項目。

當我在一個解決方案中有一個類庫而在另一個解決方案中有一個Web項目時,我遇到了這個問題。 在逐步執行websolution中的代碼時,它進入了我的類庫。 這導致在我的Web解決方案中打開類庫文件。

當我在類庫中更改了一些代碼時出現了問題。 像往常一樣,我按照正確的順序對兩個項目進行了構建。 但是,我會得到消息說源代碼不同。 這是因為我已經在我的網絡解決方案中打開了類文件的舊“視圖”,這是因為以下選項已被關閉

選項>環境>檢測何時在環境外更改文件

關閉我的Web項目中的類文件解決了我的問題。 我正在改變這個選擇。

希望這有助於某人。

上面的建議在運行單元測試時對我沒有用 - 我正在為整個解決方案執行一個干凈的重建,但是在〜\\ UnitTests \\ bin \\ Debug目錄中沒有刪除DLL和PDB文件,所以我有手動刪除這些文件,然后右鍵單擊UnitTests目錄並選擇“Build”。

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

更新:

結束創建批處理文件以清理和構建我的解決方案,以便Visual Studio不會錯誤地離開某個項目而不重建它們:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM