2

我正在安装 .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 下运行良好。任何想法如何解决这个问题?

更新:我做了一个较小的测试项目,并且在 2012 年构建良好。看起来我的主项目有些奇怪。

4

1 回答 1

2

结果是System.ComponentModel.DataAnnotations在 EF 4.4 中提供的,而它们在 EF 5.0 的单独程序集中。我的项目中混合了 EF 引用,现在我已经重建了这些引用 - 全部使用 EF 5,它解决了问题。

于 2013-03-13T17:58:13.577 回答