#asp.net #asp.net-mvc
#asp.net #asp.net-mvc
Вопрос:
Есть ли какой-либо способ ограничить построение представления только файлами, включенными в файл .csproj? Или есть хотя бы способ исключить определенные папки из процесса сборки?
В структуре папок нашего проекта у нас есть папка Admin Mocks, которая содержит множество макетов файлов .aspx и .cshtml, и хотя папка Admin Mocks не включена в файл .csproj (хотя Admin есть), кажется, что все файлы в этом дереве создаются. Это, конечно, порождает множество ошибок сборки.
Я не уверен, что это имеет значение, но наш проект представляет собой гибридное приложение WebForms / Mvc3 (как WebForms, так и Razor View Engine), использующее Asp.Net 4.
Ответ №1:
Основываясь на отметке времени, я предполагаю, что вы в конечном итоге обошли это, но я нашел здесь в Google решение той же проблемы.
У нас есть куча старых представлений Webforms, которые регистрируются только (без ссылок в проекте) в справочных целях и для A / B тестирования во время обновления приложения. (Webforms -> Razor, MVC2 -> MVC4 и т.д.)
Это было проблемой, поскольку создавались файлы .cshtml и .aspx, а ошибки в представлениях веб-формы нарушали сборку.
Решением для нас было переименовать старые файлы просмотра из Index.aspx в Index.aspx.old
(В вашем случае я бы предложил Index.aspx.mock ?)
Это означало, что они были исключены из обработки MvcBuildViews = True, но все еще были легко доступны и могли быть открыты из Visual Studio.
Дополнительным преимуществом является то, что вы можете изменить значение open with по умолчанию для этого расширения, чтобы использовать редактор Webforms, чтобы вы по-прежнему получали подсветку и все такое.
Комментарии:
1. это устраняет проблему, действительно странно, что mvc создает исключенные файлы проекта.
Ответ №2:
Если возможно, создайте отдельный веб-проект и поместите туда содержимое, которое вы не хотите встраивать, убедившись, что для MvcBuildViews установлено значение false .
Комментарии:
1. 1. Никогда не размещайте макет в своем реальном приложении. Закон Мерфи гласит, что это приведет к «утечке».
2. Макетов нет в «реальном» приложении — они не включены в csproj и никогда не развертываются. То, что макеты находятся за пределами нашей обычной структуры папок, затрудняет обращение к ресурсам css / js / image. Также, поскольку это устаревший проект, на самом деле извлечение макетов (и других макетов папок — это всего лишь один пример) для нас на самом деле неосуществимо.
3. Хорошо, тогда создайте копию веб-проекта, но переименуйте пространство имен в «MyWebSite.Mock» или «MyWebSite. Скопируйте » и установите для MvcBuildViews значение false.