CS0012 System.enum определен в сборке, на которую нет ссылки на сервере сборки, ориентированном на .NET 4.5

#c# #asp.net #.net

#c# #asp.net #.net

Вопрос:

У меня есть ASP.NET веб-приложение, ориентированное на .NET 4.5. Локально проект создается, но на сервере сборки (TeamCity) происходит сбой:

…cs (77, 38): ошибка CS0012: тип System.Enum определен в сборке, на которую нет ссылки. Необходимо добавить ссылку на сборку ‘System.Runtime, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a’.

Что может быть причиной (и средством устранения) этого?

Комментарии:

1. Решение кажется очевидным: добавление ссылки. Если вы пробовали это, почему у вас это не сработало?

2. Как настроен ваш агент сборки?

3. Если я попытаюсь добавить ссылку, используя опцию «framework», предназначенную для .NET 4.5, я не нахожу «System.Runtime» в списке. Кроме того, я хотел бы знать, почему это создается локально, и приложение запускается, а не создается на конкретном сервере сборки. Я также неохотно добавляю ссылку на что-то только для целей сборки, если я не знаю причину.

4. Что касается того, почему что-то строится локально или на сервере? Все дело в том, что находится в GAC (глобальном кэше сборок). Включаете ли вы какие-либо пакеты или плагины, созданные для более ранней версии framework?

Ответ №1:

У меня было то же самое сообщение об ошибке (хотя оно предназначено для framework 4.5.1). Ответом для меня было установить пакет разработчика Microsoft .NET Framework 4.5.1 на сервере сборки.

Если для framework 4.5 и сервера сборки используется Windows Server 2012, обязательно добавьте компоненты .NET Framework 4.5. с помощью диспетчера серверов. Если TeamCity установлен в предыдущей версии Windows, ознакомьтесь с руководством по установке Microsoft .NET Framework.

Комментарии:

1. Та же проблема и то же решение с framework 4.6.1 — установки framework на агенте недостаточно. Вам нужен пакет разработчика framework.

Ответ №2:

Проблема заключалась в том, что Team City был настроен на использование «Visual Studio 2013» на этапе сборки, в то время как наш проект использует «Visual Studio 2012».