9

有没有办法让 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"

提前致谢!

4

2 回答 2

1

11年后,我厌倦了重新运行aspnet_compiler自己,想出了一个奇怪的把戏……

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

(我仍在整理我的 Linqpad 程序,我会尽快将它发布到这个答案中)。我想知道@DanAtkinson 是否仍然可以使用它......

于 2021-07-04T05:02:50.443 回答
-1

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

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

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

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

希望这可以帮助。

于 2010-05-28T16:54:32.173 回答