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

.NET强命名程序集版本不匹配:VS运行正常、外部报错原因咨询

问题原因分析

这种差异是由Visual Studio调试环境的特殊行为和.NET程序集加载规则共同导致的,具体原因如下:

  • VS调试时优先加载项目输出目录的程序集
    在VS调试控制台应用时,CLR会优先从项目的输出目录(通常是bin\Debug或bin\Release)加载依赖的类库DLL。因为你在项目中引用的是1.0.0.0版本的类库,VS会自动将该版本的DLL复制到控制台应用的输出目录中。此时CLR加载的是本地的1.0.0.0版本,完全匹配引用要求,自然不会抛出版本不匹配的异常,GAC中的2.0.0.0版本不会被加载。

  • 独立运行时的程序集加载逻辑
    当你将程序集复制到其他文件夹独立运行时,通常是以下情况触发FileLoadException:
    你未将1.0.0.0版本的类库DLL正确复制到目标文件夹,CLR会按照加载规则去GAC中查找该类库。此时找到的是2.0.0.0版本,与控制台应用引用的1.0.0.0版本不匹配,因此抛出异常。

  • VS调试的影子复制机制
    VS调试时默认启用影子复制(Shadow Copy)功能,会将需要加载的程序集复制到临时目录后再加载,避免锁定项目输出目录的文件。这个机制也确保了调试时加载的是项目编译生成的1.0.0.0版本,而非GAC中的其他版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:27:19