我遇到网站项目和实体框架5的问题。
我将提出一些背景知识:项目类型是网站,而不是Web应用程序或MVC,因此在部署时,我只需将所有文件复制到服务器,并在第一次访问时编译所有文件。这就是我认为导致问题的原因。
该项目的目标是.Net 4.0,所以当我从nuget安装EntityFramework时,dll文件版本为4.4。使用IIS Express从VisualStudio运行项目很好(因为VisualStudio知道目标框架是4并使用.Net framework 4 dll编译项目)但是当将文件复制到安装.Net framework 4.5的生产服务器时,访问到达时,网站是针对.Net framework 4.5 dll编译的,因为EntityFramework 4.4包含类(如Column)的定义,这些类也包含在.Net 4.5的数据注释dll中。
The type 'System.ComponentModel.DataAnnotations.Schema.ForeignKeyAttribute' exists in both 'c:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35\System.ComponentModel.DataAnnotations.dll' and 'c:\Users\jyuste\AppData\Local\Temp\Temporary ASP.NET Files\portalempleado\4700d3ec\2c948b16\assembly\dl3\1c8b81c9\750c5018_1e5dce01\EntityFramework.DLL'
我认为将项目升级到.Net 4.5并更新EntityFramework引用可以解决问题,但我现在无法做到。
你认为还有另一种解决方案吗?
答案 0 :(得分:0)
根据您的编写,可能的解决方案是更改部署过程。
不是将C#源文件复制到目标服务器,而是首先将本地站点发布到任何目录。可以使用VS菜单中的“构建/发布网站”选项完成发布。
这将编译所有源文件并创建一个只包含声明性代码(* .aspx,*。ascx,*。asmx等)的部署就绪结构和包含*的 / bin 文件夹带有已编译C#代码的.dll。
然后将发布的结构复制到destiation服务器。