【问题标题】:The impact of multiple compiler definitions in system.codedom in web.configweb.config中system.codedom中多个编译器定义的影响
【发布时间】:2012-02-01 13:13:28
【问题描述】:

我所有的 ASP.NET Web 项目都是在 VB.NET 中专门开发的。 (卫星 DLL 项目也是如此,这可能不太相关。

当我查看<system.codedom> 标记下的默认 web.config 文件时,我总是发现 C# 和 VB.NET 都存在编译器定义,如下图所示。

<compilers>
    <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <providerOption name="CompilerVersion" value="v3.5"/>
        <providerOption name="WarnAsError" value="false"/>
    </compiler>
    <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" compilerOptions="/optionstrict+">
        <providerOption name="CompilerVersion" value="v3.5"/>
        <providerOption name="OptionInfer" value="true"/>
        <providerOption name="WarnAsError" value="false"/>
    </compiler>
</compilers>

如果我从该列表中删除 C# 编译器的定义,是否会提高性能?或者它是一个延迟加载系统,一个无关的编译器将永远不会被加载。或者我可能没有想到的任何缺点?

我正在调整我的应用程序以进行实时部署。

【问题讨论】:

    标签: asp.net performance web-config compiler-optimization


    【解决方案1】:

    它是延迟加载的。编译器选项根据文件扩展名指定用于动态页面编译的编译器。如果文件没有该扩展名,则永远不会启动编译器。

    如果您没有同时使用这两种语言,则可以安全地删除它。但是,如果您认为自己可能将来会使用混合语言开发,最好将其留在那里,因为它没有害处。

    【讨论】:

    • 对于 ASP.NET 4.5.1(运行时 4.0)的生产环境推荐值是什么?跨度>
    • 您不要在生产中进行动态编译,因为它有开销。更多信息stackoverflow.com/questions/34545520/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多