解決.VS2012+EF5.0開發的網站在window server2003上無法部署的問題

(一)前  言                                                                   

最近一個月使用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 的版本

 

 

  (三)   錯誤重現及詳細解決方案                                        

1.將原始網站部署到window server 2003時的錯誤如下:

 2.   更改所有項目的.net framework版本爲 4.0

 在程序集上右擊->屬性->應用程序->目標框架。如圖所示:

 

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。所以網站會報如下錯誤:

錯誤:找不到方法:“Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)”。

 

 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即可。更改如圖:

發佈了88 篇原創文章 · 獲贊 16 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章