2015-11-05 7 views
1

У меня есть C# WebApp, который мы делаем для клиента. У меня есть два класса в проекте, определенной (в отдельных файлах), как таковой ...Класс не может найти другой класс в том же пространстве имен

Общая библиотека утилиты:

namespace Client.WebApp { 
    public static class General { 
     public static MyDbClass GetDB() { 
      //<creates and returns MyDbClass here> 
     } 
    } 
} 

PageBase класс:

namespace Client.WebApp { 
    public class PageBase : System.Web.UI.Page { 
     protected MyDbClass dbo { get; set; } 

     public PageBase() { 
      dbo = General.GetDB(); 
     } 
    } 
} 

Когда я пытаюсь скомпилировать, я получаю ошибку от линии dbo = General.GetDB();:
The name 'General' does not exist in the current context Client.WebApp.

  • Я проверил дважды пространство имен, указанное в обоих файлах.
  • Я попытался добавить пространство имен верхнего уровня Client.WebApp в качестве директивы using в файле базы данных.
  • Я попытался полностью квалифицировать имя как в dbo = Client.WebApp.General.GetDB();

Ничто не помогло, и он настаивает на том, что мой General класс не существует. Забавно, что в то время как сборка попадает в эту ошибку и останавливается, редактор кода не видит эту ошибку, и оператор не получает краснеть-поджаркой.

Проект таргетирования v.4.5.2, и я работаю в VS 2015.

+0

Являются ли оба класса в одной сборке? –

+0

Избегайте использования 'My'. Он будет конфликтовать с встроенным пространством имен 'My' для тех, кто использует VB, которые могут захотеть использовать вашу сборку. –

+0

Да, они оба находятся в основном проекте WebApp, а не во внешних проектах DLL. Пространство имен является всего лишь примером. Я изменил его имя, потому что настройка пространства имен кем бы ни создала проект, включает имя клиента. Я изменил код примера, чтобы удалить эту двусмысленность. – eidylon

ответ

4

Это странная ошибка, в моем VS2015, если я установить файл Build Action ни к чему, кроме «Compile» , Я получаю сообщение об ошибке для любого типа для этого файла.

В любом случае, решение должно состоять в том, чтобы убедиться, что для параметра «Действие сборки» установлено значение «Скомпилировать», я не уверен, почему добавление нового файла установило бы действие сборки для чего-либо, кроме «Скомпилировать». Я также тестировал попытку добавления новых файлов несколькими способами (выберите шаблон текстового файла и просто назовите его something.cs), он по-прежнему устанавливает его как «Скомпилировать». Вы должны убедиться, что экземпляр VS2015 обновлен с последними обновлениями.

+0

Человек, ты просто помог мне разобраться в чем-то, что сводило меня с ума! По какой-то причине один файл получил значение Build Action = Content, а не Compile. Супер неочевидно. Поиск вашего ответа заставил меня проверить. – DWright

 Смежные вопросы

  • Нет связанных вопросов^_^