MVC 3 запрашивает System.Web версии 2.0.0.0 (System.Web.UI.Controls): это ошибка компилятора? - PullRequest
3 голосов
/ 04 июля 2011

Настройка:

Приложение MVC 3, над которым я работаю, внезапно не скомпилируется.Я получаю следующую ошибку:

Тип 'System.Web.UI.Control' определен в сборке, на которую нет ссылок.Необходимо добавить ссылку на сборку «System.Web, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a».

Это явно абсурдно: на моей машине установлена ​​версия System.Web 4.0.0.0.

Если я удалю код в соответствующей строке, ошибка просто переместится на следующую строку.

Visual Studio жаловалась на добавление, например, если я пытался перейти к определению, VS жаловалась и спрашивала, хочу ли я удалить добавление.

Вопросы:

VS искалечен?

Нужно ли переустанавливать всю эту штуковину целиком (VS 2010, электроинструменты, MVC 3 и черт знает что еще)?

РЕДАКТИРОВАТЬ:

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

В меру моих возможностей мой ответ говорит о том, как устранить эту проблему.,Но если кто-нибудь может дать полное объяснение этой проблемы, то я с радостью отмечу это как ответ.

Ответы [ 2 ]

3 голосов
/ 04 июля 2011

ОК, я дошел до сути.

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

Проблема вызвана пространством имен. Давайте назовем это WS.Extensions

В WS.Extensions у меня также было несколько методов расширения для простых ванильных серверных элементов управления asp.net, и классы, в которых находятся эти расширения, используют операторы для System.Web.UI.

Несмотря на то, что соответствующие библиотеки упоминаются в проекте библиотеки, похоже, это вызывает проблемы с MVC 3 и, на мой взгляд, неясную ошибку. Очевидно, если вы знаете, в чем проблема, но не иначе.

Я переместил все расширения в новую библиотеку без перекрестных выражений, используя операторы, которые ссылаются на пространства имен серверного элемента управления, такие как System.Web.UI.

Я не удалил свой пост, так как думаю, что проблема может возникнуть у других, переходящих от ужасов управления сервером к MVC.

Добавление:

Гадость этой ошибки заключается в том, что она отображается как ошибка компилятора с конкретной строкой, в которой находится «проблема». Закомментирование этой строки просто сдвигает строку, на которую жалуется компилятор, на одну строку вниз. Кроме того, строка не имеет абсолютно НИЧЕГО общего со строками, в которых использовались расширения. Так что никаких подсказок не было.

В результате я бы посчитал это ошибкой компилятора, которая не имеет ничего общего с ASP.NET MVC, 3 или чем-то другим.

Это вызвано ссылками (использованием) пространства имен из приложения ASP.NET MVC 3, когда это пространство имен содержит код, написанный для серверных элементов управления ASP.NET.

Я потерял полдня на этой проблеме, поэтому надеюсь, что это поможет кому-то еще. В результате переименовали вопрос.

0 голосов
/ 05 июля 2011

У меня была такая же проблема.У меня было несколько проектов, в которых использовались разные версии MVC, поэтому я получил такую ​​ошибку.

Также иногда бывает полезно очистить кэш ASP.NET после преобразования проекта в MVC 3. Это также полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...