我正在查看我在生产服务器中生成的进程转储的报告。 Asp.Net应用程序在发布模式下编译并部署到Azure应用程序服务。但是,当我查看生成的报告时,它有一个部分'在调试模式下编译的模块列表'我看到很多App_Web_xxxxxxx
(其中x是随机字符),另一个名字为Microsoft_Web_Compilation_Snapshots
如果我在发布模式下编译我的应用程序,是否正常将所有这些模块编译为调试模式?那些App_Web_xxxxxxx模块是什么,它们是预编译的视图还是什么?
答案 0 :(得分:1)
我们遇到了同样的问题。查看您的web.config中的<system.codedom>
;将/optimize+ /debug-
添加到compilerOptions
属性。
在此更改之后,程序集来自
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
到
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
编辑:
要具体回答您的问题,这些是您的应用程序中的JIT视图。在运行时,它将编译这些视图。似乎无论您的<system.compilation>
设置如何,它都会在调试模式下编译它们。以下我发现的一些讨论似乎很相关:https://forums.asp.net/t/1625220.aspx?Razor+compilation
如果你需要了解更多这些编译标志,你可以找到它们here(对于c#反正)。