Почему классы во вложенных папках в моей папке App_Code не найдены правильно?

StackOverflow https://stackoverflow.com/questions/155105

Вопрос

Я получаю следующую ошибку, когда помещаю файлы классов во вложенные папки моей папки App_Code:

Ошибка CS0246:Не удалось найти тип или имя пространства имен 'MyClassName' (вам не хватает директивы using или ссылки на сборку?)

Этот класс вообще не находится в пространстве имен.Есть какие-нибудь идеи?

Это было полезно?

Решение

Вам нужно добавить codeSubDirectories в ваш элемент компиляции в web.config

<configuration>
    <system.web>
      <compilation>
         <codeSubDirectories>
           <add directoryName="View"/>
         </codeSubDirectories>
      </compilation>
   </system.web>
</configuration>

Другие советы

Проверьте наличие свойства BuildAction в файле.Для этого должно быть установлено значение "Компилировать".

Возможно ли, что вы не установили папку в качестве приложения в IIS (или на вашем веб-сервере)?Если нет, то используемый App_Code - это код из родитель папку (или следующее приложение вверх).

Убедитесь, что папка помечена как приложение и использует правильную версию ASP.NET.

Возможно, это неправильный способ, но я нахожу его самым простым.

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

Когда вы добавляете папки в свой app_code, они разделяются разными пространствами имен, если я правильно помню, используя пространство имен по умолчанию в качестве корневого, а затем добавляя для каждой папки.

В Visual Studio (по крайней мере, 2010, но я помню и прошлые версии) вы можете щелкнуть правой кнопкой мыши по папке в обозревателе решений и затем выбрать "Включить в проект".

Затем на вкладке свойств для каждого файла (или выберите их все сразу) вы выбираете "Скомпилировать" для свойства "Действие сборки".

У меня это сработало.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top