转载: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便可。更改如图:
而后从新运行:
这个项目是本人作的一套权限控制的项目,准备写一个权限控制系列的文章。现截几张图看看。