2010-01-06 59 views
5

我使用Windows 7的x64版本。我的應用程序使用某些無法在x64上下文中加載的COM服務器(通常爲本地x86 COM服務器)。所以我決定使用WOW作爲x86應用程序運行它,所以我將平臺目標設置爲x86。在VS2008中調試Windows x64上的x86 .NET應用程序

但是,當我嘗試調試它時,Visual Studio 2008調試器開始顯示所有源文件的消息,例如「源文件不同....」。這種行爲的原因是什麼?這個問題在那裏出生"The source file is different...." message in Visual Studio 2008 is result of debugging x32 apps on x64 Windows

更新:我打掃的解決方案,重建的解決方案,去除OBJ,倉等文件夾,重新啓動電腦,重新安裝Visual Studio中......那麼,還有什麼可能是這個問題?

Update2:如果您創建新的Windows應用程序項目並將目標平臺更改爲x86,則會看到此問題。但是如果從項目中刪除Settings1.settings,麻煩將被消除!。任何想法?

UPDATE3http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/bc297668-65b4-46e8-969e-c7a6340d33b6

+0

您是否清理了項目的輸出文件夾並檢查了構建真正成功的構建日誌? – 2010-01-06 17:16:21

+0

我回答了問題的描述。 – 2010-01-06 17:21:33

+0

如果您將目標平臺切換回到x64,調試將再次運行? – 2010-01-06 17:33:00

回答

4

默認情況下,Windows 7爲VS 2008設置Windows Xp sp 3兼容模式。將兼容性更改爲Windows Vista SP2模式已解決了麻煩。

+0

對於我來說,這也適用於Visual Studio 2010。 – andnil 2010-08-31 06:53:56

+0

這工作對我來說,但我選擇了Windows 7模式謝謝 – Xenon 2012-01-03 08:39:56

4

你所得到的錯誤信息是無關的調試WOW64位應用程序。這裏甚至沒有什麼問題,因爲Visual Studio在WOW64中運行了一個32位的進程。因此,而不是x64 - > x86,實際上是在執行x86 - > x86調試會話。

這裏發生的事情是,Visual Studio正在從PDB中讀取源文件的校驗和,並且它與您用來調試應用程序的文件的校驗和不匹配。造成這種情況的最可能的原因是

  • 已過期PDB的
  • 使用不正確的源文件。這比在分支場景中您可能會輕易獲取錯誤版本的文件更常見。

我通常通過這個調試的方法是

  • 關閉VS並手動刪除所有的二進制文件和二進制目錄
  • 重啓VS,重建
  • 關閉VS
  • 重新啓動VS和附加到正在運行的項目而不打開解決方案
  • 然後手動打開文件
+0

查看我的更新2 – 2010-01-11 09:55:28

1

您可能還會檢查x86構建類型。當您創建它時,您可能無法從默認構建中複製設置,因此當您運行應用程序時,您的代碼不會構建。

調出解決方案屬性並檢查配置屬性\配置頁面。然後確保所有項目都在Build下檢查您正在使用的配置/平臺組合。

+0

確實,在當前配置中排除構建的項目對我來說似乎是一個常見的錯誤。但是,徹底清除解決方案(如OP所做的)應該讓你注意到這一點? – 2010-01-07 09:59:05

+0

是的。但他忽略了他可能沒有看到這種可能性的編譯器錯誤/構建消息。另外,如果他要告訴它在清理乾淨後明確建立,他也不會看到這個問題。 – 2010-01-07 16:19:15

+0

我還沒有製作x86「構建類型」,我剛剛將項目屬性的構建頁面上的Platform目標從Any CPU更改爲x64。就這些。 – 2010-01-11 09:42:26

相關問題