Visual Studio 2010 вдруг не видит пространство имен? - PullRequest
83 голосов
/ 03 февраля 2011

У моего решения C # WinForms есть два проекта.DLL, которая является основным проектом, над которым я работаю, и исполняемый файл WinForms, который я называю «Песочница», чтобы я мог легко скомпилировать / запустить / отладить DLL.

Я работаю в.Net 4.0 для обоих проектов.

Все работало нормально, пока я не добавил немного, казалось бы, невинного кода и ссылку на System.Web в DLL.Теперь мой проект Sandbox не может видеть пространство имен проекта DLL.Я не изменил ничего, что, по моему мнению, должно было повлиять на это.

Если я удаляю ссылку проекта на DLL из ссылок «Песочница» и заново добавляю ее, тогда красные подчеркивания исчезают, и появляется цветовая кодировкаобратно на все мои занятия и т.д .;но как только я пытаюсь построить решение, все снова разваливается.

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

У меня такое ощущение, что это может быть какая-то ошибка?

Это какая-то ошибка VS2010?У меня была такая же проблема несколько месяцев назад, и я мог исправить ее только тогда, когда создавал совершенно новый проект и повторно импортировал мои файлы.На этот раз, однако, у меня есть файлы bajillion, и я сделаю это только в крайнем случае!

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

string url = "http://maps.google.com?q=" + HttpUtility.UrlEncode(address);

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

Ответы [ 7 ]

149 голосов
/ 03 февраля 2011

Я готов объявить эту ошибку в VS2010, это уже слишком утомило программистов. Исправить несложно: Project + Properties, вкладка Application, измените Target Framework на «.NET Framework 4» вместо профиля клиента, выбранного по умолчанию.

System.Web не входит в профиль клиента. Иметь эту опцию в первую очередь довольно глупо, клиентский профиль всего на 15% меньше, чем полная версия .NET 4.0. Его выбор по умолчанию еще глупее. Но я отвлекся.

ОБНОВЛЕНИЕ: к счастью, все это было исправлено в VS2012. Что больше не делает профиль клиента по умолчанию для нового проекта. И клиентский профиль полностью удалился в .NET 4.5, хорошее избавление.

8 голосов
/ 03 февраля 2011

Убедитесь, что оба проекта используют профиль, отличный от клиента, для своей целевой платформы (перейдите к свойствам каждого проекта, чтобы сделать это).

2 голосов
/ 19 октября 2015

Одна из возможностей состоит в том, что целевая версия библиотеки классов .NET Framework выше, чем у проекта.Я столкнулся с этой проблемой и решил ее, закрыв Visual Studio, снова открыв Visual Studio, очистив и восстановив решение.Это сработало для меня.На некоторых других постах я прочитал ответы, и большинство пользователей решили проблему следующим образом.

1 голос
/ 03 февраля 2011

Попробуйте самостоятельно построить только проект с песочницей dll.

Затем укажите исполняемый проект на требуемую dll и убедитесь, что для copy local установлено значение true. в справочных настройках.

Затем создайте исполняемый проект.

0 голосов
/ 15 сентября 2015

У меня только что была эта проблема, и оказалось, что у меня было несколько используемых пространств имен, которые имели одно и то же имя объекта (т.е. бизнес-объекты имели те же имена, что и модели mvc);

Полное определение имен решило проблему для меня.

0 голосов
/ 27 марта 2012

Если вы уже пытались внести изменения в Framework, но все еще не работали, я надеюсь, что это работает для вас (как и для меня): просто добавьте необходимые ссылки из ваших проектов.Совершенно очевидно, но я делал это неправильно, пока не нашел, в чем проблема.

0 голосов
/ 19 октября 2011

Изменение целевого фреймворка с «Профиль клиента .NET Framweork 4» на «.NET Framework 4» сработало для меня с аналогичной проблемой.Я согласен, что профиль клиента, кажется, не имеет большого преимущества в его использовании.Кажется, меня преследуют странные ошибки, за которыми я охотюсь, пока не вспомню, что Visual Studio по умолчанию использует профиль клиента.Я предполагаю, что мораль этой истории при получении ошибки такова: если «Rebuild Solution» не работает, проверьте структуру Target ...

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