0

我在使用网站项目和实体框架 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 框架 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 参考可以解决问题,但我现在做不到。

您认为还有其他解决方案吗?

4

1 回答 1

0

根据您所写的,一个可能的解决方案是更改部署过程。

不要将 C# 源文件复制到目标服务器,而是首先将站点本地发布到任何目录。可以使用 VS 菜单中的“构建/发布网站”选项来完成发布。

这将编译所有源文件并创建一个仅包含声明性代码(*.aspx、*.ascx、*.asmx 等)的部署就绪结构和包含 *.dll 的/bin文件夹和已编译的 C# 代码。

然后才将发布的结构复制到目标服务器。

于 2013-06-05T13:40:07.453 回答