Проект ASP.NET MVC и папка App_Code
Почему App_Code не является выбором в подменю Add ASP.NET Folder в обозревателе VS-решений? Я понимаю, что вы можете создать его самостоятельно, просто переименовав новую папку, но что здесь рационально? Разве это не означает, что вы должны класть классы "утилита" или "уровень обслуживания"?
На стороне проекта MVC. Мне нравится то, что есть ссылка на System.Configuration из коробки, в отличие от проектов ASP.NET по умолчанию по умолчанию.
Ответы
Ответ 1
Реальный ответ заключается в том, что Microsoft хочет, чтобы вы купили то, что вам нужно VS, чтобы делать MVC. Однако, чтобы преобразовать проект в чистый JIT, который легче работать с...
Вы можете сделать это довольно прямо.
(1) Переместите все папки, содержащие файлы классов, в App_Code
(оставьте папку Views, где она есть)
(2) Сделайте Global.asax
, не нуждающийся в кодовом коде или наследующий ссылку, удалив эти атрибуты, а затем разместив
[script runat="server"]
... place contents of code behind class inner code
[/script]
и удалите код для хорошего
(3) В Bin
Удалите ссылку на DLL проекта, чтобы сохранить другие необходимые DLL в терминах запуска MVC
(4) Удалите файлы и папки файлов решений и папку с файлом
Я делаю это регулярно для nop MVC, так как его гораздо проще работать с веб-уровнем на JIT. Разработчики, которые этого не понимают, не работают в окопах каждый день на многих веб-сайтах с различными специальными быстрыми исправлениями. Сайты, на которых мы работаем, получают сотни тысяч обращений в день, поэтому использование JIT не имеет снижения производительности после начального удара.
Кажется, что это меньше, когда дело доходит до более мелкого развития сайта.
Ответ 2
Вероятно, это связано с тем, что проект ASP.NET MVC представляет собой веб-приложение, а не веб-сайт. На веб-сайте файлы классов скомпилируются динамически во время выполнения и должны находиться в папке App_Code. В веб-приложении все скомпилировано статически, а файлы классов могут работать в любом месте вашего веб-приложения.
Как отметил Дэвид Браун, обычно рекомендуется помещать дополнительное определение класса в отдельную библиотеку классов, а затем ссылаться на это из вашего веб-приложения. Если вы пишете модульные тесты или ссылаетесь на свои классы из файлов конфигурации, может быть сложно или невозможно получить доступ к этим классам, если они определены только в вашем веб-приложении.
Ответ 3
Как правило, я помещаю классы "уровень сервиса" и "полезность" в отдельный проект и добавляю его в качестве ссылки на мое веб-приложение. В среде MVC я не вижу необходимости компилировать классы во время выполнения.
Ответ 4
Для тех, кто не хочет вторую библиотеку проектов/классов и просто хочет простую папку для нескольких классов С#, я предлагаю "App_Classes".