Вид бритвы не дает ошибку времени компиляции
Недавно я установил VS 2012 Professional.
Когда я пытаюсь создать свой MVC4 Web Project. Он не распознает ошибку в режиме бритвы, когда я делаю "Build" или "Re-Build".
Пример:
Я удалил пространство имен из проекта/или переименовал его. Я построил решение, он дал мне ошибки во всех файлах cs, которые я исправил, изменив пространство имен. Полное решение успешно завершено. Когда я запускаю проект, он дал мне Ошибка компиляции, сказав, что пространство имен не найдено, поскольку старое пространство имен все еще упоминалось в некоторых представлениях (файлы *.cshtml).
Ожидаемое решение:
Я хочу, когда я сделаю "Build" или "Re-Build", он должен распознать такие ошибки и показать мне вместе с любыми другими ошибками.
Это отлично работает с VS 2010, я не вижу никакой конфигурации?
Спасибо, заранее!
Amit
Edit
Я сам нашел ответ, думаю, было рано задавать вопрос:
синтаксис бритвы с ошибками компилируется, когда он не должен компилироваться
Другая проблема
После изменения значения True в файле .csproject, когда я начну строить в проекте отображается ошибка, но одновременно отображается только одна ошибка. скажем, у меня 5 ошибок в общей сложности 3 просмотров. это просто покажет мне одну ошибка. Есть ли какое-либо решение, чтобы оно отображало все 5 ошибок?
Ответы
Ответ 1
Когда я пытаюсь создать свой MVC4 Web Project. Он не распознает ошибку в razor, когда я делаю "Build" или "Re-Build".
Кажется нормальным. Представления Razor динамически компилируются во время выполнения ASP.NET. Если вы хотите, чтобы ваши представления были созданы во время компиляции, вы можете добавить в свой файл .csproj
следующий параметр:
<PropertyGroup>
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>
Более подробную информацию вы можете найти в этой статье.
Ответ 2
Я рекомендую вам добавить тег MmvcBuildViews в качестве дочернего элемента тега ReleaseGroup Release, чтобы представления компилировались только при компиляции в режиме Release (или при публикации в режиме Release). Таким образом, ваше приложение быстрее, когда вы отлаживаете. И вы получаете проверки времени компиляции перед развертыванием (когда вы работаете в режиме Release). Таким образом, вы получаете лучшее из обоих миров.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>
Ответ 3
По моему опыту, помимо правда
выше, вам все равно необходимо обеспечить, чтобы в вашем файле csproj существовали настройки ниже:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
Ответ 4
По умолчанию он не компилирует представления. Вы можете включить эту функцию, но имейте в виду, что она увеличит время сборки.
Вы можете включить компиляцию вида, выполнив следующие шаги:
- Выгрузить проект
- Открыть файл проекта
- Найдите
<MvcBuildViews>false</MvcBuildViews>
и измените его на true
- Закрыть проект проекта и перезагрузить проект
Ответ 5
Его действительно очень простой ответ Пройдите следующие шаги:
Выгрузить проект
Изменить проект
Чем поиск:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
ниже добавить
<Target Name="AfterBuild" Condition="'$(Configuration)'!='Debug'">
<RemoveDir Directories="$(BaseIntermediateOutputPath)" />
</Target>
Это то, что выгружает проект. Построить
И проверка синтаксиса Ur работает правильно.
Я уверен.