Итак, у меня действительно странная проблема с моей папкой 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 (я знаю, глупый дизайн). Создайте новую папку с названием code или что-то в этом роде и поместите их туда.
Это вызвало у меня всевозможные проблемы, когда я обновил кучу старых веб-сайтов .Net до проектов приложений.
Стоит отметить, что если вы просто перетащите файлы кода из папки App_Code в новую папку, их свойство действия сборки может по-прежнему иметь значение content, и остальная часть приложения не сможет видеть пространства имен как единое целое. из ответов, упомянутых ниже, установка этого параметра для компиляции отсортирует это, я думаю, что любой файл класса, созданный в папке App_Code по умолчанию, будет настроен на сборку action = content, даже в проекте WAP.
Что за трата времени! Ничего, кроме головной боли 6 месяцев! Спасибо за публикацию! +1 stackoverflow.com/questions/26135251/…
Да, у меня было веб-приложение и типы проектов C#. mztools.com/Articles/2008/MZ2008017.aspx
Я иногда замечал несоответствие между парсером IDE и компилятором всякий раз, когда ошибка времени компиляции возникает в сборке или файле кода, на которые имеется ссылка. В этом случае IDE будет правильно определять типы и обеспечивать их полную поддержку, но, поскольку компилятор не смог создать объекты, на которые есть ссылки, он будет жаловаться на то, что объекты, на которые есть ссылки, не существуют.
Я не хочу никого ни в чем обвинять - это всего лишь предположение, - но вам, вероятно, следует убедиться, что в вашем файле кода, на который имеется ссылка, нет никаких ошибок.
В зависимости от того, как вы публикуете сайт, он не будет выглядеть в App_Code, вместо этого он будет искать DLL в папке Bin, которая содержит класс. Как вы перенесли свой сайт на сервер?
Это случилось со мной, и решение заключалось в том, что App_Code (и App_Data) помещались не в корень сервера, а в подпапку, в которой хранилось все остальное. Должен быть в корне!
Проблема в том, что ваши классы не скомпилированы. Вы решите эту проблему, просто перейдя к свойствам любого класса в папке App_Code и изменив его свойство Build Action с «Content» на «Compile».
Есть ли способ изменить действие сборки для каждого класса сразу?
Каковы последствия этого, есть ли причина, по которой это настройка по умолчанию?
Я не могу щелкнуть свойство, оно отключено
Для тех, кто будет следовать… У меня был тот же набор проблем, но он был вызван тем, что я назвал класс в App_Code «HTML». Потребовалось много времени, чтобы понять, что это был просто конфликт имен, потому что компилятор не очень помог мне сообщить мне, в чем проблема.
Как вы разместили сайт на сервере?