Слишком много подпространств имен в Asp.Net? CS0234 - PullRequest
3 голосов
/ 16 ноября 2010

Работая над проектом Asp.Net, добавляя новый элемент управления (ascx), сталкиваюсь с причудливой проблемой CS0234.По сути, компилятор не может найти полностью определенное пространство имен.Что делает его действительно странным, так это то, что иногда он может его найти, а иногда нет.Каждый раз, когда я делаю сборку, она не может найти ее в разных файлах.То есть иногда он строит.Иногда он находит его в файлах a и b, но не в c и d.Иногда он находит пространство имен в a, b и c, но не в d.И любая другая перестановка.

Добавить новый элемент управления, определенный в классе ClassName (файлы ClassName.ascx и ClassName.ascx.cs).

Путь: c: .. \ Project \ WebuserControls \ ControlType

Пространство имен - Project.WebUserControls.ControlType

Во всем проекте, который я вызываю Project.WebUserControls.ControlType.ClassName.SomeMethod(); Когда я компилирую, я получаю ошибку "CS0234 Тип или имя пространства имен 'Project.WebUserControls.ControlType' не существует вкласс или пространство имен «Project.WebUserControls» (вам не хватает ссылки на сборку?) «даже если оно наверняка существует в этом пространстве имен.Кроме того, Intellisense не может найти пространство имен или что-либо в нем.

Файл c # имеет форму

namespace Project.WebUserControls.ControlType
{
    using System 
    ...etc
    public partial class ClassName : System.Web.UI.UserControl
    {

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

В web.config:

<system.web>
    ...
    <pages>
        ... 
        <namespaces> 
            <add namespace="Project.WebUserControls" />

Интересно, что если я заменю namespace="Project.WebUserControls" на namespace="Project.WebUserControls.ControlType", он не скомпилируется.

Это исправление работает около получаса и нескольких сборок, но теперь перестало работать.Нет, я не изменил код, чтобы он перестал работать.

Есть идеи?


Пару часов спустя: перемещение ClassName, как класса, так и файлов, вверх на один уровень в пространствах имен и пути соответственно, похоже, решило проблему.То есть теперь он находится в пространстве имен Project.WebUserControls и по пути c: .. \ Project \ WebUserControls \

Не знаю, почему это сработало.Имя пути было не более 255 символов.


На следующий день снова сломано ... Ничего не изменилось.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2010

Для меня это больше похоже на проблему с Visual Studio, чем на C # /. NET.

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

0 голосов
/ 16 ноября 2010

Похоже, теневая копия, которую делает vstudio / IIS, не перестраивается / не используется должным образом.

Попробуйте встроенный сервер разработчика (в vstudio) или перезапустите IIS

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