Ошибки CS0246 и CS0433 при создании веб-сайта.NET 4.0 на Server 2012

Я строю веб-проект.Net 4.0 на Server 2012 с установленным.Net 4.5. Я использую Psake под TeamCity и получаю CS0246, в котором говорится, что NotMapped не может быть найден, наряду с CS0433, в котором говорится, что он нашел две DLL для DataAnnotations.

Класс выглядит так:

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]

Сборка отлично работает под Windows 8, используя только Psake, а не TeamCity. Есть идеи, как решить эту проблему?

Обновление: я сделал меньший тестовый проект, и он прекрасно работает в 2012 году. Похоже, что-то странное в моем основном проекте.

1 ответ

Решение

Оказывается System.ComponentModel.DataAnnotations поставляется в EF 4.4, тогда как они находятся в отдельной сборке для EF 5.0. У меня была смесь ссылок на EF в моих проектах, которые я сейчас перестроил - все для использования EF 5, и это решило проблему.

Другие вопросы по тегам