How to return all aspnet_compiler errors (not just those in first directory)
Is there a way to get the aspnet_compiler to go through all views and return all errors, rather than just the errors in the current view directory?
For example, lets say I have a project that has a bunch of folders...
Views
Folder1
Folder2
Folder3
Folder4
Two of them (Folder2
and Folder3
) have errors. aspnet_compiler will run, and only return the errors it comes across in Folder2
. It won't return those in Folder3
at the same time. Once I fix the errors in Folder2
and run it again, it'll then pick up the ones in the Folder3
. I fix those. And then have to run the tool ag开发者_如何转开发ain, and again until it's all fixed.
This is getting annoying!!
For reference, here's the command I use:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -v / -p "C:\path\to\project"
Thanks in advance!
11 years later, I grew tired of re-running aspnet_compiler
myself and came up with one weird trick...
- Write a simple
.exe
(or Linqpad project) that loadsaspnet_compiler.exe
into your process. - Set-up an event-handler to
AppDomain.FirstChanceException
to be notified of allHttpCompileException
instances.- These are caught by
aspnet_compiler
'sMain()
method, which fails at the first try. - Save the filename that caused the
HttpCompileException
in aHashSet
.
- These are caught by
- Then run
aspnet_compiler
'sMain
method. - If an
HttpCompileException
is thrown, then your program has the name of the file that failed, so then add that file to the-x
compiler exclusion-list and re-runaspnet_compiler
'sMain
method again. - And loop until it completes with no errors - and you'll have a list of all files with blocking errors.
(I'm still tidying-up my Linqpad program that does this, I'll post it to this answer shortly). I wonder if @DanAtkinson can still use it...
Hmmm ... rather than doing this via command prompt you can have your project build settings to do this for you automatically. Edit your project file in a text editor and add this settings in there if not already ...
<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)..\$(ProjectName)" />
</Target>
This should compile all your views and return any compile time errors if any. Additionally for ASP.NET MVC projects, you might want to enable the MvcBuildViews
property by setting it to true
as it is disabled by default.
...
<MvcBuildViews>true</MvcBuildViews>
...
Hope this helps.
精彩评论