轉載:http://www.cnblogs.com/eggTwo/p/3653825.htmlhtml
(一)前 言 web
最近一個月使用VS2012(默認框架是.net framework4.5),EF5.0開發了一套基礎框架。開發完成以後,準備部署到window server 2003(公司的外網服務器)。卻發現 window server 2003只支持.net framework 4.0和比 net framework 4.0 低的版本。服務器
(二)解決方案簡述 框架
第一步:將.net framework 版本改成 4.5網站
第二步:更改EF5.0針對.net framework 的版本.net
(三) 錯誤重現及詳細解決方案 3d
1.將原始網站部署到window server 2003時的錯誤以下:server
2. 更改全部項目的.net framework版本爲 4.0htm
在程序集上右擊->屬性->應用程序->目標框架。如圖所示:blog
3.將webconfig 文件更改以下:
4.從新運行網站 報錯以下:
5. 更改以下:
6.運行網站
若是網站中沒有使用EF的話,網站這時就能夠運行成功了。可是因爲個人網站中使用了針對於.net framework4.5 版本的EF5.0(EF5.0有兩個版本,一個是針對.net framework4.5,一個是針對.net framework4.0)。因爲咱們下降了原網站的.net framework的版本(從4.5下降到了4.0)。因此咱們應該使用針對.net framework4.0的EF5.0版本。可是因爲咱們原始網站的目標框架是4.5的,因此當咱們在4.5框架上新建EF5.0時,默認使用的是針對.net framework4.5的EF5.0。因此網站會報以下錯誤:
7.此錯誤解決方案以下:
解決方法很簡單,主要問題是:雖然各個類庫項目的編譯版本(更改後的版本)選擇了Framework4.0,可是EF(原始項目目標框架)在引用時的EntityFramework.dll是針對4.5版本的.所以咱們只要將引用EF的地方將引用更改爲正確的dll便可.
個人VS2012安裝在C盤,所以EntityFramework.dll的地方在C:/Program Files (x86)/Microsoft Web Tools/Packages/EntityFramework.5.0.0/lib/ ,裏面有net40和net45,net40天然是在Framework4.0下使用的了.
以下圖咱們能夠清楚的看到兩個版本的差別:
8.從新發布,部署到window server 2003上,報錯以下:
報錯緣由是 EF5.0針對於.net framework 4.0版本的 Vseion=4.400,因此只須要更改Version便可。更改如圖:
而後從新運行:
這個項目是本人作的一套權限控制的項目,準備寫一個權限控制系列的文章。現截幾張圖看看。