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

构建解决方案时随机出现多种NuGet相关错误求助

随机NuGet安装失败问题的排查思路

构建解决方案时随机出现以下某类错误:

C:\working_directory.nuget\NuGet.targets(91, 5): Type handle 'NuGet.ProjectModel.LockFile' and method handle with declaring type 'NuGet.ProjectModel.HashCodeCombiner' are incompatible. Get RuntimeMethodHandle and declaring RuntimeTypeHandle off the same MethodBase.
C:\working_directory.nuget\NuGet.targets(91, 5): error MSB3073: The command ""C:\working_directory.nuget\NuGet.exe" install "C:\working_directory\Project_A\packages.config" -source " https://www.nuget.org/api/v2/ " -NonInteractive -RequireConsent -solutionDir "C:\working_directory\ "" exited with code 1.
C:\working_directory.nuget\NuGet.targets(91, 5): Common Language Runtime detected an invalid program.
An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

该问题最初仅出现在一台机器上,现在另一台机器也出现相同情况;并非持续出现,多次重建后可成功,但Clean Solution无法解决。环境为VS2015和VS2013。

根据你遇到的这些随机错误(涉及CLR运行时、NuGet版本兼容性、MSB3073退出码等),以下是针对性的排查方向:

1. 修复NuGet.exe版本与VS的兼容性

你日志里提到的NuGet版本是3.5.0.1938,这个版本和VS2013/2015的适配存在不稳定点:

  • 替换为对应VS版本的稳定NuGet版本:VS2013推荐使用NuGet 2.8.6.x版本,VS2015推荐NuGet 3.4.4这类经过验证的稳定版,避免过新或过旧的版本引发冲突。
  • 手动替换NuGet.exe:下载官方稳定版后,替换掉C:\working_directory\.nuget\NuGet.exe,同时删除该文件夹下的NuGet.targets和NuGet.config,重启VS后会自动生成适配当前VS的默认配置。

2. 排查32位/64位平台不匹配问题

错误中的BadImageFormatException和“格式不正确的程序”提示,大概率是位数冲突导致:

  • 强制以32位模式启动VS:找到VS的x86启动路径(比如VS2015是C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe),用这个路径启动VS,避免64位VS进程调用32位NuGet.exe(反之亦然)的冲突。
  • 确认NuGet.exe位数:下载32位版本的NuGet.exe,旧版VS对32位工具的兼容性更好。

3. 彻底清理NuGet缓存与本地包

缓存损坏是随机错误的常见诱因,不要只依赖Clean Solution:

  • 删除全局NuGet缓存:手动删除%userprofile%\.nuget\packages文件夹,强制NuGet重新下载完整的包文件。
  • 清理解决方案本地文件:删除解决方案根目录下的packages文件夹,以及所有项目的bin、obj文件夹,重启VS后右键解决方案选择Enable NuGet Package Restore,重新触发包安装流程。

4. 修正NuGet配置与项目文件的细节问题

日志里的源地址有前置空格(" https://www.nuget.org/api/v2/ "),这可能导致偶尔的解析失败:

  • 编辑.nuget\NuGet.config,把源地址的多余空格去掉,改成"https://www.nuget.org/api/v2/"。
  • 检查所有项目的packages.config,确认没有引用不存在的包或版本冲突的依赖,保证跨项目的包配置一致。
  • 确认所有项目的包还原开关已开启:右键项目→属性→生成→勾选“允许NuGet包还原”。

5. 修复.NET Framework运行时

错误中的“CLR检测到无效程序”、“签名不正确”提示,可能是.NET运行时损坏:

  • 修复对应版本的.NET Framework:VS2013依赖.NET 4.5.1,VS2015依赖.NET 4.6,打开控制面板→程序和功能→找到对应的.NET Framework,选择“更改→修复”。
  • 临时关闭杀毒软件或调试工具:部分安全软件可能拦截NuGet.exe的运行或修改其文件签名,尝试关闭后再构建测试。

6. 检查文件系统权限与磁盘健康

随机错误也可能和磁盘文件损坏、权限不足有关:

  • 确保C:\working_directory文件夹有完整的读写权限:右键文件夹→属性→安全→给当前用户添加“完全控制”权限。
  • 运行磁盘检查:以管理员身份打开命令提示符,执行chkdsk C: /f,修复可能存在的磁盘错误(需要重启电脑生效)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:23:26