如何返回所有aspnet_compiler错误(不仅仅是第一个目录中的错误)

时间:2010-05-26 15:42:05

标签: asp.net-mvc aspnet-compiler

有没有办法让aspnet_compiler遍历所有视图并返回所有错误,而不仅仅是当前视图目录中的错误?

例如,假设我有一个包含大量文件夹的项目......

  • Views
    • Folder1
    • Folder2
    • Folder3
    • Folder4

其中两个(Folder2Folder3)有错误。 aspnet_compiler将运行,并且只返回它在Folder2中遇到的错误。它不会同时返回Folder3中的那些。在我修复Folder2中的错误并再次运行后,它会获取Folder3中的错误。我修复了那些。然后必须再次运行该工具,直到它全部修复。

这很烦人!!

供参考,这是我使用的命令:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -v / -p "C:\path\to\project"

提前致谢!

2 个答案:

答案 0 :(得分:1)

嗯...而不是通过命令提示符执行此操作,您可以让项目构建设置自动为您执行此操作。在文本编辑器中编辑项目文件并在此处添加此设置(如果尚未...

<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> 
  <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)..\$(ProjectName)" />
</Target>

这应该编译所有视图并返回任何编译时错误(如果有的话)。此外,对于ASP.NET MVC项目,您可能希望通过将MvcBuildViews属性设置为true来启用它,因为默认情况下它被禁用。

...
<MvcBuildViews>true</MvcBuildViews>
...

希望这有帮助。

答案 1 :(得分:1)

11 年后,我厌倦了自己重新运行 aspnet_compiler 并想出了一个奇怪的技巧...

  • 编写一个简单的 .exe(或 Linqpad 项目),将 aspnet_compiler.exe 加载到您的流程中。
  • AppDomain.FirstChanceException 设置一个事件处理程序,以接收所有 HttpCompileException 实例的通知。
    • 这些被 aspnet_compilerMain() 方法捕获,该方法在第一次尝试时失败。
    • 将导致 HttpCompileException 的文件名保存在 HashSet 中。
  • 然后运行 ​​aspnet_compilerMain 方法。
  • 如果抛出 HttpCompileException,则您的程序具有失败文件的名称,因此将该文件添加到 -x 编译器排除列表并重新运行 aspnet_compilerMain 方法。
  • 并循环直到它完成且没有错误 - 您将拥有一个包含阻塞错误的所有文件列表。

(我仍在整理执行此操作的 Linqpad 程序,我将很快将其发​​布到此答案中)。我想知道@DanAtkinson 是否还可以使用它...