由於電腦安裝的了兩個不同版本的.Net,導致之前所有的基於VS2012的Console程序都無法調試。但編譯的exe可以正常運行。
調試過程提示如下錯誤:
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
這個錯誤是嘗試讀取或寫入受保護的內存。這通常表明其他內存已損壞。我猜測是由於讀取Win32的DLL但沒有釋放導致的錯誤。如下圖:
嘗試以下各種方案均無效
- 更換更高版本的Framework版本。
- 運行netsh winsock reset
- 刪除所有引用
- 修改爲X86的編譯版本
最後通過如下配置解決了問題:
Debug
標籤 -> 在Enable Debuggers
中 -> 選擇Enable native code debugging
保存項目,F5調試,恢復正常。
總結一下:
這個問題似乎與.NET 4.5.1有關,4.5與更高版本的Frameword有兼容問題。後續搜索,可能下載並安裝.NET 4.5.2也能解決問題。但還沒有嘗試過。