我正在安装.Net 4.5的Server 2012上构建.Net 4.0 Web项目。我正在TeamCity下使用Psake,并且得到CS0246,说无法找到NotMapped,CS0433说它已经找到了两个用于DataAnnotations的DLL。
该课程如下:
using System.ComponentModel.DataAnnotations.Schema;
public abstract class Order
{
[NotMapped]
public decimal TaxPercentage { get; set; }
}
完整错误包括:
Ordering\Order.cs(105,8): error CS0246: The type or namespace name 'NotMapped' could not be found (are you missing a using directive or an assembly reference?) [C:\TeamCity\buildAgent\work\71c853cb9b4c108\Code\Models\Model.csproj]
Ordering\Order.cs(105,8): error CS0433: The type 'System.ComponentModel.DataAnnotations.Schema.NotMappedAttribute' exists in both 'c:\TeamCity\buildAgent\work\71c853cb9b4c108\Code\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll' and 'c:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35\System.ComponentModel.DataAnnotations.dll' [C:\TeamCity\buildAgent\work\71c853cb9b4c108\Code\Models\Model.csproj]
使用Psake而不是TeamCity,Windows 8下的构建工作正常。有任何想法如何解决这个问题?
更新:我做了一个较小的测试project,这在2012年建立得很好。看起来我的主要项目有些奇怪。
答案 0 :(得分:2)
在EF 4.4中提供System.ComponentModel.DataAnnotations
,而它们在EF 5.0的单独程序集中。我在我的项目中混合了EF参考资料,我现在已经重建了 - 所有这些都使用了EF 5,它解决了这个问题。