Работая над проектом 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 символов.
На следующий день снова сломано ... Ничего не изменилось.