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

.NET程序集加载路径异常:VS与Process Explorer显示不一致

关于.NET 4.6.1程序集GAC加载路径的困惑解答

这确实是个容易让人摸不着头脑的细节,我来帮你拆解背后的原因:

  • GAC双路径的本质:MSDN的文档没错,.NET 4.0及以上版本引入了独立的新GAC路径C:\Windows\Microsoft.NET\assembly,而旧版.NET(1.0-3.5)的GAC是C:\Windows\assembly。但.NET 4+的CLR并没有完全抛弃旧GAC,而是保留了对它的兼容性支持。

  • VS模块窗口的“视觉假象”:VS的模块窗口显示的是逻辑加载路径,而非真实的物理文件路径。.NET 4+的CLR会将从旧GAC加载的程序集,在模块窗口中映射为新GAC的逻辑路径展示,这是为了统一.NET 4+环境下的路径呈现,但并不代表文件实际在那里。

  • Process Explorer和HAND的真实路径:这两个工具直接读取进程加载的文件的物理位置,所以显示的C:\Windows\assembly才是程序集实际被加载的地方。这种情况通常发生在你的程序引用了针对旧.NET版本编译的系统组件(比如一些基础类库),这些组件仍然存放在旧GAC中,.NET 4.6.1的CLR会兼容加载它们。

简单来说:VS给你的是“逻辑上的归类路径”,而Process Explorer和HAND给你的是“真实的文件存储路径”,两者并不冲突,只是展示维度不同而已。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:09:04