Подтвердить что ты не робот

Тип или пространство имен не найдено из папки App_code

Я написал класс под названием ArchivedFilesWrapper в папке App_code моего проекта, однако, когда я использую этот класс в другом файле в другой папке, я получаю ошибку:

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

Я думал, что каждая страница должна иметь возможность находить классы, которые содержатся в одном проекте, но я думаю, что это не так. Может кто-нибудь, пожалуйста, скажите мне, что использовать выражение, которое мне нужно иметь?

Вот фрагмент из моего класса:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace EMCWebAdmin.App_Code
{
    public class ArchivedFilesWrapper
    {
4b9b3361

Ответ 1

Если вы конвертируете его в веб-приложение, оно должно работать. Недостатком является то, что он больше не будет автообновлять свой код в папке app_code каждый раз, когда вы его измените, и разверните приложение. Я никогда не видел, чтобы профессиональный разработчик использовал проект веб-сайта. Я понятия не имею, на кого ориентировались MS, когда они их создали.

Ответ 2

Возможно, проблема будет решена путем изменения свойства Build Action Property исходного файла *.cs на Скомпилировать из Контент. В обозревателе решений щелкните правой кнопкой мыши исходный файл и выберите "Свойства".

Обратите внимание, что папка App_Code предназначена для использования в проектах веб-сайта.

Обратите внимание, что для проекта Проект веб-приложения или MVC, добавив в проект папку App_Code и вставив в нее *.cs файлы вызовет проблемы. Я неохотно добавил папку App_Code в проект MVC из обозревателя решений. VS по умолчанию помещало пространство имен в MyProjectName.App_Code. В этом случае Visual Studio 2012 по умолчанию выполнил действие "Построение действия", хотя тип был .cs-кодом. После того, как я изменил Свойство Action исходного файла *.cs на Скомпилировать из Контент, пространство имен было разрешено в других папках проекта. Однако из-за проблем мне пришлось изменить имя папки - см. Ниже.

Внимание!

В проекте MVC или веб-приложения папка App_Code вызывает проблемы, поскольку имеет семантику типа веб-сайта. Эта папка скомпилируется при публикации (развертывании) на сервере. Изменяя Build Action from Content to Compile, вы разрешаете проблему с пространством имен в своей среде разработки, заставляя немедленную компиляцию, но вы получаете проблемы, когда вторая компиляция приводит к ошибкам objects defined twice при развертывании. Поместите файлы кода в папку с другим именем. Если вы конвертировали веб-сайт в веб-приложение, см. Рекомендации в Сети для этого - не в рамках этого вопроса. Подробнее о папке App_Code в разных типах проектов см. Этот блог

Ответ 3

Вам нужно добавить

using EMCWebAdmin.App_Code;

на все страницы, которые вы хотите использовать для этого класса.

В качестве альтернативы вы изменяете пространство имен, в котором находится класс, к тому же, что использует все веб-страницы, которые предполагают, что это EMCWebAdmin

то в своем классе изменение

namespace EMCWebAdmin.App_Code
    {
...

к

namespace EMCWebAdmin
    {
...

Это функция визуальной студии, если вы создаете класс в структуре папок, он использует пространство имен, следующее за структурой папок.

Ответ 4

Да, поставьте calsses в другую папку (а не специальную папку asp.net), и используйте только основное пространство имен для приложения, чтобы решить эту проблему. Спасибо johnmcp.