先解釋一下問題:我原來的電腦環(huán)境是Win7+VS2015,因為新?lián)Q了個電腦環(huán)境變成Win10+VS2015了,所以就把原先的項目復制到新的機器上,那么問題來了,原先的一個項目在VS2015上打開竟然直接報錯(注意:這里不是發(fā)布到IIS上,就是直接用VS中F5運行)。報的錯很常見,但是一般的解決辦法都不試用,解決可是廢了老大勁兒了。

未能加載文件或程序集“System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一個依賴項。找到的程序集清單定義與程序集引用不匹配。 (異常來自 HRESULT:0x80131040)

下面就開始描述我的解決辦法:

1.按提示錯誤來說,找不到這個程序集,怎么可能,最終是發(fā)現(xiàn)文件版本不對。

所以,就將webconfig中,System.Web.Helpers的版本號直接改為2.0。

誰知道又報了一個新錯誤,找不到System.Web.WebPages.Razor。這個在web.config中壓根就沒有記錄...........................

2.緊接著我把上圖幾個程序集全部注釋掉,可惜出現(xiàn)的錯誤更多了。我開始回到最開始的問題,因為Bin目錄下的文件版本不對,這一次我不改web.config文件中的版本號,我去找一個System.Web.Helpers版本號為1.0的dll直接把原來的給覆蓋掉。

所以在項目文件夾下搜索,發(fā)現(xiàn)如下圖所示,第二個dll的版本是1.0,第一個dll版本是2.0,將1.0的版本把2.0的版本給覆蓋掉,重新用VS運行,結(jié)果還是報錯。


3.接下來經(jīng)過討論猜測有可能是.net framework 版本的問題,因為VS2015中版本直接都是4.0靠上,而項目用的是3.5,所以又在控制面板->程序->程序和功能中,點擊啟用或關(guān)閉Windows功能,進而把.net framework 3.5給裝上,之后關(guān)機重啟再次運行,結(jié)果還是不行。

 

4.既然不是.net framework版本的問題,就有可能是MVC版本的問題,這個項目比較老,采用的都是MVC3,而VS2015中已經(jīng)沒有MVC3了,最低版本就是MVC4。

就嘗試著在VS2015上裝一個MVC3,在引用上點擊管理Nuget包。之后點擊安裝,就可以了。其中在輸出過程中發(fā)現(xiàn),舊的DLL被新的DLL替換,MVC的DLL文件也重新替換。

最終,再次打開VS運行,發(fā)現(xiàn)能夠運行,不再報錯。

 

 

 

總結(jié):這次項目的轉(zhuǎn)移出的錯誤本來來說不算是太坑,但是因為是系統(tǒng)由Win7換成了Win10,所以我有很大的誘導性,剛開始總是以為是系統(tǒng)換了,導致運行環(huán)境變了,所以就會出現(xiàn)這種奇葩問題??春芏嗑W(wǎng)上給的回復說是,Windows的歷史包袱很重,一陣吐槽,不得不說這其實是個坑。但是這都解決不了問題,所以還的慢慢研究,經(jīng)過討論,發(fā)現(xiàn)問題的根本所在。