VS2013 не компилирует представления ASP.NET MVC5
My Visual Studio Ultimate 2013 Update 4 не компилирует представления ASP.NET MVC 5.
Ошибки компиляции замечены на представлениях спорадически, хотя компиляция всегда успешна. Intellisense также включен и выключен. Я бы сказал, что он работал значительно лучше в VS2012 (у меня не так много MVC на этой версии).
Я попытался добавить <MvcBuildViews>true</MvcBuildViews>
в файл .csproj, который используется для работы в VS2010, но он больше не работает.
Любая идея, что может быть проблемой?
ОБНОВЛЕНИЕ: Я ищу способ увидеть ошибки в представлении, как это происходило в предыдущих версиях VS.
Ответы
Ответ 1
Включает ли ваш проект цель и подключается к событию сборки? Попробуйте msbuild WebApplication1.csproj /t:MvcBuildViews
из командной строки, он проверит, что у вас установлены оба свойства по умолчанию и заданные цели.
<PropertyGroup>
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
Попробуйте создать пустой MVC-проект из VS2013U4 и сравните csproj с вашим.
Ответ 2
Щелкните правой кнопкой мыши ваш веб-проект в обозревателе решений. Нажмите Unload Project
. Щелкните правой кнопкой мыши проект и выберите Edit <projname>.csproj
.
Убедитесь, что у вас есть этот элемент (добавьте его, если он не существует).
<Project>
<PropertyGroup>
<MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>
</Project>
Прокрутите вниз. Вы должны увидеть комментарий: "Чтобы изменить процесс сборки, добавьте свою задачу в одну из целей ниже и раскомментируйте ее". Внизу добавьте эту разметку:
<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<ItemGroup>
<ExtraWebConfigs Include="$(BaseIntermediateOutputPath)\**\web.config" />
<ExtraPackageTmp Include="$([System.IO.Directory]::GetDirectories("$(BaseIntermediateOutputPath)", "PackageTmp", System.IO.SearchOption.AllDirectories))" />
</ItemGroup>
<Delete Files="@(ExtraWebConfigs)" />
<RemoveDir Directories="@(ExtraPackageTmp)" />
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
(приведенный выше код должен иметь родительский корень <Project>
node, если вы не видите комментарий, о котором я упоминал)
Закройте файл .csproj
, затем щелкните правой кнопкой мыши ваш проект в обозревателе решений и нажмите Reload Project
.
Это добавит ваши представления на этап компиляции и остановит вашу сборку, если обнаружены ошибки. Я нашел, что это хорошо, потому что без него я иногда не замечаю ошибок в списке ошибок, пока я не развернул свой сайт, а затем вручную ударил их. Будьте осторожны, это добавит некоторое время на ваш шаг сборки, значительно замедляя его. В зависимости от того, что вы пытаетесь достичь, вы можете захотеть выборочно включить/отключить его для быстрого выполнения процесса сборки → test.
Вдохновение для этого ответа было взято из ответа Криса Хайна на MVCBuildViews не работает правильно и Можно ли компилировать представления Razor?.