Почему классы во вложенных папках в моей папке App_Code не найдены правильно?
-
03-07-2019 - |
Вопрос
Я получаю следующую ошибку, когда помещаю файлы классов во вложенные папки моей папки 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, но я помню и прошлые версии) вы можете щелкнуть правой кнопкой мыши по папке в обозревателе решений и затем выбрать "Включить в проект".
Затем на вкладке свойств для каждого файла (или выберите их все сразу) вы выбираете "Скомпилировать" для свойства "Действие сборки".
У меня это сработало.