Проект ASP.NET MVC и папка App_Code - PullRequest
13 голосов
/ 01 февраля 2009

Почему App_Code не выбирается в подменю «Добавить папку ASP.NET» в обозревателе решений VS? Я понимаю, что вы можете создать его самостоятельно, просто переименовав новую папку, но что здесь разумного? Разве это не то место, куда вы должны поместить классы типа «утилита» или «сервисный уровень»?

На примечании стороны проекта MVC. Мне нравится тот факт, что в отличие от стандартных проектов веб-форм ASP.NET есть ссылка на System.Configuration из коробки.

Ответы [ 4 ]

21 голосов
/ 01 февраля 2009

Вероятно, это связано с тем, что проект ASP.NET MVC является веб-приложением, а не веб-сайтом. На веб-сайте файлы классов динамически компилируются во время выполнения и должны находиться в папке App_Code. В веб-приложении все статически компилируется, и файлы классов могут находиться в любом месте вашего веб-приложения.

Как отметил Дэвид Браун, обычно рекомендуется поместить дополнительное определение класса в отдельную библиотеку классов, а затем сослаться на это в своем веб-приложении. Если вы пишете модульные тесты или ссылаетесь на свои классы из файлов конфигурации, доступ к этим классам может быть затруднительным или невозможным, если они определены только в вашем веб-приложении.

10 голосов
/ 17 ноября 2011

Реальный ответ заключается в том, что Microsoft хочет, чтобы вы купили то, что вам нужно, чтобы VS сделал MVC. Однако, чтобы преобразовать проект в чистый JIT, с которым проще работать ...

Вы можете сделать это довольно прямо.

(1) Переместить все папки, содержащие файлы классов, в App_Code (оставить папку Views там, где она есть)
(2) Сделать Global.asax не нуждающимся в коде или наследовать ссылку, удалив эти атрибуты и поместив

[script runat="server"] 
... place contents of code behind's class inner code 
[/script] 

и удалите код позади навсегда

(3) В Bin Удалите ссылку на DLL проекта, убедившись, что остальные необходимые библиотеки DLL сохранены с точки зрения запуска MVC
(4) Удалить файлы решения и папку свойств и папку obj

Я обычно делаю это для nop MVC, так как гораздо проще работать с веб-уровнем на JIT. Разработчики, которые этого не понимают, не работают в окопах каждый день на многих веб-сайтах с необходимыми различными быстрыми исправлениями. Сайты, над которыми мы работаем, получают сотни тысяч посещений в день, поэтому использование JIT не снижает производительности после первоначального увеличения.
Кажется, чем меньше, тем больше, когда речь идет о разработке небольших веб-сайтов.

10 голосов
/ 01 февраля 2009

Как правило, я помещаю классы «сервисный уровень» и «служебные» в отдельный проект и добавляю их в качестве ссылки на мое веб-приложение. В рамках MVC я не вижу необходимости компилировать классы во время выполнения.

0 голосов
/ 24 ноября 2014

Для тех, кому не нужна вторая библиотека проекта / класса и просто нужна простая папка для нескольких классов c #, я предлагаю «App_Classes».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...