如何在构建期间检查视图文件是否存在构建错误(未打开)

Dan*_*ler 7 c# asp.net-mvc razor

默认情况下,Visual Studio仅检查CSHTML文件上的构建错误(如果它们在构建时打开).我想在构建闭包CSHTML文件的同时实现这一点.

我在这篇文章中看到过:如何在运行时本帖之前编译cshtml

解决方案很简单,只需在csproj文件中设置:

<MvcBuildViews>true</MvcBuildViews>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这开始引发它在临时文件夹中生成的cs文件中的错误.cs文件是转换后的cs html文件,并且它们本身不可编译,因此我得到了各种实际上不存在的构建错误.


我目前的解决方案是我将MvcBuildViews设置为false,然后在构建之前手动打开项目中的所有CSHTML文件.

有没有修复跳过临时文件,或者打开所有CSHTML文件的方法更有效?

Eri*_*ips 2

是否有跳过临时文件的修复方法,或者比打开所有 CSHTML 文件更有效的方法?

唯一支持的方式是<MvcBuildViews>项目配置元素。它得到了 MsBuild 的支持,允许无人值守的构建工作。这是检查视图中构建错误的最有效方法。

cs文件是转换后的cs html文件

这意味着什么?视图是vbhtmlcshtml。没有任何意见.cs

如果不添加正确的配置元素(如下),当cshtml文件转换为.cs(中间文件)然后编译时,您可能会遇到一些奇怪的错误。

不幸的是,这开始在临时文件夹中生成的 cs 文件中引发错误。

使用以下方法有很多答案 ( 1 2 3 4 )<MvcBuildViews> ) 。

关于 MVC 项目(实际上是一般的 Web 项目)需要了解的重要一点是,每个视图都默认编译在项目的 obj/bin 目录中。该问题通常存在于 IIS 和 IIS Express 尝试再次编译视图时,而视图已经存在。因此,上面列出的修复将编译目录更​​改为项目外部的目录。