“无法加载文件或程序集”错误需按五步修复:一、精准提取报错中含版本号和公钥标记的完整程序集名;二、确认目标程序所需的.NET Framework版本;三、从NuGet、GitHub官方发布页或正常电脑GAC中获取匹配版本的DLL;四、将DLL部署至程序主目录或对应bin子目录;五、若为强命名程序集,须用gacutil以管理员身份注册到GAC。

电脑运行程序时突然弹出“无法加载文件或程序集”错误,说明.NET Framework或程序依赖的某个DLL文件缺失、版本不匹配或被系统阻止加载,必须逐层定位并替换/修复对应组件才能恢复运行。
确认报错中具体缺失的程序集名称
双击错误弹窗→点击“详细信息”按钮→在展开文本中找到形如“Could not load file or assembly ‘XXX.dll’”或“System.IO.FileNotFoundException”的那一行→复制单引号内的完整文件名(例如:Newtonsoft.Json.dll、System.Data.SQLite.dll)。
这一步不能跳过。如果只记下“某某.dll”而漏掉版本号或公钥标记(如 , Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed),后续下载的DLL极大概率仍无法加载。
检查目标程序所需的.NET Framework版本
右键程序快捷方式→“属性”→“兼容性”选项卡→点击“更改高DPI设置”旁的“设置”按钮→若弹出“.NET Framework”相关提示,记录其要求的版本(如v4.7.2);若无提示,则打开程序安装目录,用记事本打开同名.exe.config文件→查找<supportedRuntime>节点下的version属性值。
【必须匹配】下载的DLL必须与该.NET版本兼容。比如.NET Core 3.1程序强行塞入.NET Framework 4.8的System.Data.dll会导致立即崩溃。
从可信来源获取缺失的程序集
方法一:使用NuGet Package Manager Console(适用于开发环境)
打开Visual Studio → “工具”→“NuGet包管理器”→“程序包管理器控制台”→输入 Install-Package Newtonsoft.Json -Version 13.0.3(将Newtonsoft.Json替换成你查到的程序集名,版本号严格对应)→回车执行。
方法二:手动下载官方发布包(适用于无VS环境)
访问对应项目的GitHub Releases页面(例如搜索“Newtonsoft Json.NET releases”)→下载Assets中带“.nupkg”后缀的包→用7-Zip解压→进入lib文件夹→找到匹配你.NET版本的子文件夹(如net472)→提取其中的.dll文件。
方法三:从另一台正常运行同一程序的电脑复制
进入C:\Windows\Microsoft.NET\assembly\GAC_MSIL\(按程序集名找对应文件夹)→进入最深一层哈希命名的子目录→复制其中的.dll文件→粘贴到当前电脑报错程序的同一级目录下。
注意:不要从不明论坛或第三方DLL下载站获取文件,很多已被植入后门或篡改签名。
部署DLL到正确位置
第一步:将下载/提取的.dll文件复制到报错程序的主目录(即双击运行的那个.exe文件所在文件夹)。
第二步:若程序是ClickOnce部署或有application manifest文件,需同时将.dll放入其子目录\app.publish\或\bin\Debug\下,并确保manifest中<dependency>节点的hash值与新DLL一致——否则启动时校验失败仍报错。
第三步:若该DLL属于强命名程序集(名称含PublicKeyToken),还需用gacutil.exe注册到全局程序集缓存:
以管理员身份运行开发者命令提示符→输入 gacutil -i "C:\path\to\YourAssembly.dll"→回车。
这一步操作不可逆。注册失败会残留无效条目,后续需用gacutil -u YourAssembly彻底卸载,否则可能干扰其他程序。

















