我们有一个使用CSharpCodeProvider动态生成和编译代码的应用程序。编译的代码使用Entityframework,因此我们将对Entityframework.dll的引用传递给编译器。我们使用我们的应用程序重新分发的Entityframework.dll是为.net 4.0构建的。我们还将对System.ComponenModel.DataAnnotations.dll的引用传递给编译器。这是对GAC中发现的dll的引用。
在.net 4.0上运行应用程序时,所有这一切都正常。但是,当在.net 4.5上运行时,我们遇到了一个问题,因为.net 4.0中的Entityframework中的某些属性已被移动到.net 4.5中的System.ComponenModel.DataAnnotations。所以我们得到这样的错误:
消息=错误(CS0246):类型或命名空间名称'列'找不到(你缺少using指令或程序集引用吗?) - file:c:\ Generated \ DataContext \ 0rs2sztj.2.cs:14 错误(CS0433):类型' System.ComponentModel.DataAnnotations.Schema.ColumnAttribute'存在于&c; \ Users \ Steven Segers \ AppData \ Local \ Temp \ Temporary ASP.NET Files \ vs \ 69fafaea \ 17b01629 \ assembly \ dl3 \ 95fc97d4 \ 5bdae37d_7c05d101 \ EntityFramework.DLL'和&#c; \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ System.ComponentModel.DataAnnotations \ v4.0_4.0.0.0__31bf3856ad364e35 \ System.ComponentModel.DataAnnotations.dll' - file:c:\ Generated \ DataContext \ 0rs2sztj.2.cs:14
据我所知,有两种方法可以解决这个问题: