Не удается запустить проект MVC4, если не использовать стандартный выходной каталог
Моя структура проекта выглядит следующим образом:
- ЦСИ
- библиотека классов 1
- библиотека классов 2
- веб-проект
- бен
- отладка
- релиз
Выходной каталог по умолчанию для веб-проекта MVC4 составляет .\Bin\
(т.е. в каталоге веб-проекта), но я меняю его на нечто вроде ..\bin\debug\
или ..\bin\release\
, чтобы соответствовать моей вышерасположенной структуре проекта. Он компилируется отлично, и двоичные файлы идут в правильные места.
Но когда я запускаю проект, он жалуется, что Could not load type Myproject.MvcApplication
, тогда как если я не сделаю вышеуказанные изменения, он будет работать.
Как управлять местоположением для двоичных файлов? Я хочу, чтобы выходной каталог был полностью отделен от исходных каталогов - он легче развертывается и более безопасен, потому что у меня нет смеси источников и двоичных файлов в одном месте.
Ответы
Ответ 1
Короткий ответ, вы не можете. Это не имеет ничего общего с Visual Studio или даже .NET, это ограничение IIS.
Причина в том, что IIS ожидает, что каталог bin будет находиться непосредственно под папкой папки веб-сайта. Это механизм безопасности, который нельзя обойти. Цель состоит в том, чтобы предотвратить скомпрометированный веб-сайт от "экранирования" от границ корневого узла непосредственно на сайте.
Почему вы даже ХОТИТЕ это сделать?
Ответ 2
Я тоже ударил, это неожиданно и запутанно, учитывая, что разделение двоичных файлов отладки и выпуска является стандартной практикой, а MVC имеет настройку выходной папки, которая заставляет задуматься об этом. Это можно сделать, см. здесь, но это немного уродливо.
Кажется, что существует конфликт между соблюдением ожиданий IIS и необходимостью отлаживать и выпускать отдельные и четко обозначенные. Я думаю, что существует потребность в том, что текущее решение не очень хорошо удовлетворяет. Отладка и выпуск - это соображения времени сборки, при соблюдении IIS - время пакета/развертывания, и два из них запутались.