53

我最近安装了 VS 2012 Professional。

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

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

预期的解决方案
我希望当我执行“构建”或“重新构建”时,它应该能够识别此类错误并向我显示任何其他错误。

这在 VS 2010 上运行良好,我是否缺少任何配置?

提前致谢 !!阿米特

编辑 我自己找到了答案,我认为现在发布问题还为时过早:

带有错误的剃刀语法在不应该编译时编译

另一个问题

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

4

5 回答 5

75

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

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

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

您可以查看这篇文章以获取更多详细信息。

于 2013-04-17T06:23:58.460 回答
21

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

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <MvcBuildViews>true</MvcBuildViews>
  </PropertyGroup>
于 2014-07-10T00:06:07.293 回答
18

根据我的经验,除了上面提到的真实设置之外,您还需要确保您的 csproj 文件中存在以下设置:

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>
于 2015-04-16T01:24:21.613 回答
15

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

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

  • 卸载项目
  • 打开项目文件
  • 找到 <MvcBuildViews>false</MvcBuildViews>并将其更改为true
  • 关闭项目文件并重新加载项目
于 2013-04-17T06:26:37.410 回答
2

它真的非常简单的答案通过以下步骤:

卸载项目

编辑项目

比搜索:

<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 语法是否正常工作。

我确定。

于 2016-09-13T11:40:44.907 回答