Подтвердить что ты не робот

VS2013 не компилирует представления ASP.NET MVC5

My Visual Studio Ultimate 2013 Update 4 не компилирует представления ASP.NET MVC 5.

Ошибки компиляции замечены на представлениях спорадически, хотя компиляция всегда успешна. Intellisense также включен и выключен. Я бы сказал, что он работал значительно лучше в VS2012 (у меня не так много MVC на этой версии).

Я попытался добавить <MvcBuildViews>true</MvcBuildViews> в файл .csproj, который используется для работы в VS2010, но он больше не работает.

Любая идея, что может быть проблемой?

ОБНОВЛЕНИЕ: Я ищу способ увидеть ошибки в представлении, как это происходило в предыдущих версиях VS.

4b9b3361

Ответ 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(&quot;$(BaseIntermediateOutputPath)&quot;, &quot;PackageTmp&quot;, 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?.