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

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

萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

下面就開(kāi)始描述我的解決辦法:

  1.按提示錯(cuò)誤來(lái)說(shuō),找不到這個(gè)程序集,怎么可能,最終是發(fā)現(xiàn)文件版本不對(duì)。

      萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

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

      萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

  誰(shuí)知道又報(bào)了一個(gè)新錯(cuò)誤,找不到System.Web.WebPages.Razor。這個(gè)在web.config中壓根就沒(méi)有記錄...........................

      萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

  2.緊接著我把上圖幾個(gè)程序集全部注釋掉,可惜出現(xiàn)的錯(cuò)誤更多了。我開(kāi)始回到最開(kāi)始的問(wèn)題,因?yàn)锽in目錄下的文件版本不對(duì),這一次我不改web.config文件中的版本號(hào),我去找一個(gè)System.Web.Helpers版本號(hào)為1.0的dll直接把原來(lái)的給覆蓋掉。

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

      萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

  

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

      萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

 

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

      萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

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

      萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)              

      萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

      萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

  最終,再次打開(kāi)VS運(yùn)行,發(fā)現(xiàn)能夠運(yùn)行,不再報(bào)錯(cuò)。

       萬(wàn)碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開(kāi)發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

 

 

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