You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor Server(.NET 6.0)中如何让Crossgen2编译时不包含IL代码?

Blazor Server (.NET 6.0) 移除Crossgen2编译后程序集托管IL代码的方法

.NET 6+ 提供了原生配置参数,支持Crossgen2编译时剥离程序集中的托管IL代码,仅保留ReadyToRun生成的原生代码,配置方法如下:

配置步骤

  • 打开你的Blazor Server项目的.csproj工程文件,在<PropertyGroup>节点中添加以下配置:
<PropertyGroup>
  <!-- 原有已配置的ReadyToRun参数 -->
  <PublishReadyToRun>true</PublishReadyToRun>
  <!-- 新增两个参数用于剥离IL -->
  <PublishReadyToRunStripIL>true</PublishReadyToRunStripIL>
  <PublishReadyToRunEmitSymbols>false</PublishReadyToRunEmitSymbols>
</PropertyGroup>
  • 执行发布命令生成最终程序集,注意普通编译(dotnet build)不会触发ReadyToRun逻辑,必须使用发布命令:
    dotnet publish -c Release -r [目标运行时标识符,例如win-x64、linux-x64]

注意事项

  • 剥离IL后程序集将不支持依赖原始IL的运行时逻辑,包括但不限于:动态反射读取IL、AOP动态代理、运行时JIT回退、第三方库的IL解析逻辑,启用前请确认你的业务代码和依赖库无此类需求
  • 若发布后运行出现类型加载失败、方法缺失等异常,可临时将PublishReadyToRunStripIL设置为false验证是否为IL剥离导致的兼容性问题
  • 该配置仅对当前项目生成的程序集生效,第三方依赖的NuGet包如果未预先做ReadyToRun编译,默认仍会保留IL代码

内容的提问来源于stack exchange,提问作者Alexey M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:27:00