剃刀视图没有给出编译时错误

时间:2013-04-17 06:21:09

标签: asp.net-mvc asp.net-mvc-4 razor visual-studio-2012

我最近安装了VS 2012 Professional。

当我尝试构建我的MVC4 Web项目时。当我执行“构建”或“重新构建”时,它无法识别剃刀视图中的错误。

示例
我从项目中删除了一个名称空间/或者说重命名了它。我构建了解决方案,它给了我所有cs文件中的错误,我通过更改命名空间来修复。整个解决方案成功构建。当我运行该项目时,它给了我编译错误,说明找不到命名空间,因为旧的命名空间仍然在某些视图(* .cshtml文件)中被引用。

预期解决方案
我希望当我做“构建”或“重新构建”时,它应该识别这些错误并向我显示任何其他错误。

VS 2010正常运行,我缺少任何配置吗?

提前致谢!! 阿米特

修改 我自己找到了答案,我认为发布这个问题还为时过早:

razor syntax with errors compiles when it should not compile

  

另一个问题

     

在.csproject文件中将值更改为True后,当我开始构建时   它显示错误的项目,但它一次只显示一个错误。   比方说,我在3个视图中有5个错误。它会告诉我一个   错误。有没有解决方案,以便显示所有5个错误?

5 个答案:

答案 0 :(得分:72)

  

当我尝试构建我的MVC4 Web项目时。它无法识别错误   当我做“构建”或“重新构建”时剃刀视图。

似乎很正常。 Razor视图由ASP.NET运行时动态编译。如果您希望在编译时构建视图,可以将以下选项添加到.csproj文件中:

<PropertyGroup>
    <MvcBuildViews>true</MvcBuildViews>
</PropertyGroup>

您可以查看this article了解详情。

答案 1 :(得分:20)

我建议您将MmvcBuildViews标记添加为Release PropertyGroup标记的子级,以便仅在以发布模式编译时(或在发布模式下发布时)编译视图。这样,您的应用程序在调试时会更快。并且,在部署之前(在构建发布模式时),您将获得编译时检查。总而言之,您将获得两全其美。

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <MvcBuildViews>true</MvcBuildViews>
  </PropertyGroup>

答案 2 :(得分:16)

根据我的经验,除了     真正 上面提到的设置,你仍然需要确保你的csproj文件中存在以下设置:

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>

答案 3 :(得分:11)

默认情况下,它不会编译视图。您可以启用此功能,但请记住它会增加构建时间。

您可以按照以下步骤启用编译视图:

  • 卸载项目
  • 打开项目文件
  • 查找 <MvcBuildViews>false</MvcBuildViews>并将其更改为true
  • 关闭项目文件并重新加载项目

答案 4 :(得分:1)

它非常简单的答案完成这个步骤:

卸载项目

编辑项目

比搜索:

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
  <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>

下面添加

<Target Name="AfterBuild" Condition="'$(Configuration)'!='Debug'">
  <RemoveDir Directories="$(BaseIntermediateOutputPath)" />
</Target>

那就是卸载项目。构建

Check Ur语法工作正常。

我当然。