dri*_*iis 24 .net c# asp.net aspnet-compiler
因此,我的一个网站有一个应该在应用程序启动之前运行的PreApplicationStartMethod:
[assembly: PreApplicationStartMethod(typeof(ServiceStackAppHost), "Start")]
Run Code Online (Sandbox Code Playgroud)
此方法执行一些引导并依赖于某些配置.
现在,我想编译网站作为我的自动构建过程的一部分 - 所以我调用aspnet_compiler.exe,因为它运行PreApplicationStartMethod而失败:
AfterBuild:
C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe -v temp -p C:\ Projects\error ASPRUNTIME:预应用程序启动初始化方法启动类型RedactedNameSpace.ServiceStackAppHost引发异常以下错误消息:依赖项的解析失败,type ="..."
在编译网站时,如何避免aspnet_compiler.exe调用PreApplicationStartMethod?
Dav*_*bbo 31
简短的回答是你不能阻止它运行,这是设计的,但你可以解决问题.
原因是PreApplicationStartMethod(或者构建在它之上的WebActivator)可以用于实际影响编译的事情,这样如果你省略它,那么网站可能无法编译.
举个例子,您可以在PreAppStart方法中将命名空间添加到编译中,然后影响Razor页面的编译.
显然,并不是每个PreAppStart方法都需要在使用aspnet_precompiler时运行,但我们会在需要时运行所有这些方法.
如果aspnet_compiler中的代码中断,则可能需要在PreAppStart方法中添加条件逻辑来检测情况并省略运行代码.
您可以查看System.Web.Hosting.HostingEnvironment.InClientBuildManager属性以确定您的PreAppStart方法是在aspnet_compiler.exe(它将在何处true)的上下文中运行,还是在运行时(它将在何处false)运行.InClientBuildManager也适用于在VS中构建网站,该网站使用与aspnet_compiler.exe基本相同的代码路径.
请注意,WebActivator也支持PostApplicationStartMethod,并且不会在aspnet_compiler下运行.该代码在之后 运行Application_Start,因此它可能适合您的方案,也可能不适合您的方案.但它可能是你的解决方案.
不直接相关但对调试很有用:您可以将-errorstack传递给aspnet_compiler.exe,以便在出现错误时获得更完整的堆栈.
| 归档时间: |
|
| 查看次数: |
2383 次 |
| 最近记录: |