環境:.net core SDK版本 2.0.0-preview1-005977
VS 2017 version 15.3.0 preview 3.0
問題描述:今天在遷移Job的項目中,中午吃飯的時候項目還是能跑起來的,正常。吃完飯,然后回來,項目就掛掉了,在program.cs文件加載過程中直接拋異常:
System.StackOverflowException
點進異常信息中去看,就一條記錄 $exception The debugger is unable to evaluate this expression System.StackOverflowException
由於周一的時候也遇到這個問題,當時的做法是:新建一個項目,把出錯項目的東西都給復制過去,然后運行就好了。 今天又出現了這個問題了,我覺得一定要把它搞明白,不然問題可能還會出現。
問題查找過程:
我把舊項目備份了一下,然后在舊項目的基礎上把所有我寫的東西都給刪了,然后再運行項目,項目還是一樣的錯誤。我開始覺得是不是的開發環境出問題了,然后新建了一個項目,結果這個測試的項目可以在本機運行成功,那么我的系統的運行環境是沒有問題的。我有點懷疑是不是這個項目只要一出錯,會生成某個文件,每次運行的時候,執行到這里就會出錯。畢竟我現在兩個項目從表面上看是一模一樣的。
接下來我對兩個項目從文件管理器中進行比對,結果發現了一個問題,我的出錯的項目的\bin\Debug\netcoreapp2.0目錄下有一堆原來引用的*.dll 包,而新建的項目中什么都沒有。
我於是檢查了一遍我的csproj文件,結果出錯的項目中除了系統生成的引用並沒有加上額外的引用。感覺問題不應該出現在這里。
后來干脆一下把所有的dll給刪除了,項目運行成功了。沒有異常信息出現。那么問題就在這里了
后來一個一個排查之后發現是NewtonSoft.Json.dll這個包的錯。刪除之后問題解決了。
可是還有個疑問沒有解決: 明明我沒有引用那個dll 為什么放在了那里就會出現這個錯誤?等以后遇到了再實際解決吧!