Похоже, что MvcBuildViews создает больше файлов, чем включено в файл .csproj

#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.