Ответ 1
Проблема в том, что ваши классы не скомпилированы. Вы решите эту проблему, просто перейдя к свойствам любого класса в папке App_Code и изменив свойство "Build Action" на "Content" на "Compile"
Итак, у меня очень странная проблема с моей папкой App_Code на новом веб-сайте, который я разрабатываю.
У меня есть базовый класс внутри пространства имен в папке App_Code. Все работает отлично в среде IDE, когда я настраиваю пространство имен и создаю объект из класса. Он отображает сводку класса при наведении, и когда вы нажимаете "перейти к дефиниции", он переходит к файлу класса. И он также отлично работает локально.
Однако, когда я загружаю сайт на свой сервер, я получаю это сообщение об ошибке при доступе к этой странице:
Строка 10: использование System.Web.UI.WebControls;
Строка 11: использование System.Web.UI.WebControls.WebParts;
Строка 12: использование xxxx.xxxx
Сообщение об ошибке компилятора: CS0246: Не удалось найти имя типа или пространства имен "xxxxxx" (вам не хватает директивы using или ссылки на сборку?)
Я знаю, что файл класса есть. Кто-нибудь имеет представление о том, что происходит?
Изменения:
Джон, да, это сайт 2.0.
Проблема в том, что ваши классы не скомпилированы. Вы решите эту проблему, просто перейдя к свойствам любого класса в папке App_Code и изменив свойство "Build Action" на "Content" на "Compile"
Если ваше приложение представляет собой проект веб-приложения, а не проект веб-сайта, файлы кода не должны находиться в папке App_Code (глупый дизайн, я знаю). Создайте новую папку под названием код или что-то еще и поместите туда.
Это вызвало у меня всевозможные проблемы, когда я обновил кучу старых веб-сайтов .Net в проектах приложений.
Это случилось со мной, и решение заключалось в том, что App_Code (и App_Data) не были помещены в корневой каталог сервера, а в подпапку, в которой все остальное. Должно быть в корне!
Я иногда заметил несоответствие между парсером IDE и компилятором всякий раз, когда возникает ошибка времени компиляции в ссылочной сборке или файле кода. В этом случае IDE будет правильно идентифицировать типы и обеспечить полную поддержку для них, но поскольку компилятор не смог создать объекты, на которые ссылаются, он будет жаловаться, что ссылочные объекты не существуют.
Теперь я не хочу никого обвинять - это просто догадка, но вы наверняка должны убедиться, что в вашем ссылочном файле кода нет ошибок.
В зависимости от того, как вы публикуете сайт, он не будет выглядеть в App_Code, он будет искать DLL в папке Bin, которая содержит класс. Как вы перенесли свой сайт на сервер?
Для тех, кто следует... У меня был такой же набор проблем, но он был вызван тем, что я назвал класс в App_Code, 'HTML'. Долго подумал, что это просто конфликт имен, потому что компилятор не очень помог мне рассказать мне, в чем проблема.