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

.NET Framework因Fusion发布策略导致加载程序集300ms延迟求助

问题:.NET Framework 4.7.2 WinForms应用JIT加载System.Windows.Forms.dll时出现300ms+延迟

场景与现象

我创建了目标框架为.NET Framework 4.7.2的WinForms新项目,替换Program类代码后,调试时单步进入foo()函数出现超过300ms的延迟。经定位,该延迟由JIT加载System.Windows.Forms.dll触发。

排查结果

通过Process Monitor追踪发现,系统在延迟期间多次尝试加载不存在的文件C:\Windows\assembly\pubpol636.dat,相关调用日志及堆栈跟踪已留存。反编译clr!CPublisherPolicy::LoadBitmaskData函数后确认:该函数会10次尝试加载pubpol策略文件,每次间隔30ms,累计时长与观测到的延迟完全匹配。

当前限制与无效尝试

  • .NET Core环境下无此问题,但我需进行多目标框架开发,无法接受该强制延迟。
  • 尝试在App.config中配置publisher policy,未解决问题。
  • 暂未明确为何仅System.Windows.Forms.dll触发该文件加载路径,但后续测试证实所有.NET Framework应用均存在此问题。

临时解决方案

  • 创建空的pubpol636.dat文件可临时绕过延迟,但并非合理的长期方案。
  • 删除注册表项HKLM\SOFTWARE\Microsoft\Fusion\PublisherPolicy\Default下的Latest值,可彻底消除该延迟。

需求

寻求该问题的根源以及合理的长期解决方案。

内容的提问来源于stack exchange,提问作者lordmilko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 02:20:59