我在网站项目和EntityFramework5上遇到了问题。
我将介绍一些背景知识:项目类型是网站,而不是web应用程序或MVC,因此在部署时,我只需将所有文件复制到服务器,并在第一次访问时编译所有文件。这就是我认为导致问题的原因。
该项目的目标是.Net 4.0,所以当我从nuget安装EntityFramework时,dll文件版本是4.4。使用IIS Express从VisualStudio运行项目是很好的(因为VisualStudio知道目标框架是4,并使用.Net框架4DLL编译项目),但是当将文件复制到安装了.Net框架4.5的生产服务器时,当第一次访问时,网站将根据.Net框架4.5DLL进行编译,并且出现问题,因为EntityFramework 4.4包含类(如列)的定义,这些类(如列)也包含在.Net 4.5的dataannotations中。
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参考可以解决这个问题,但我现在不能这么做。
你认为还有其他的解决方案吗?
发布于 2013-06-05 21:40:07
根据您所写的内容,一种可能的解决方案是更改部署过程。
首先将站点本地发布到任何目录,而不是将C#源文件复制到目标服务器。发布可以使用VS菜单中的"Build/Publish Web Site“选项来完成。
这将编译所有的源文件,并创建一个仅包含声明性代码(*.aspx、*.ascx、*.asmx等)的部署就绪结构和/bin文件夹,该文件夹包含带有已编译的*.dlls代码的C#。
然后才能将发布的结构复制到destiation服务器。
https://stackoverflow.com/questions/16938651
复制相似问题