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

NuGet无法获取旧版本包?求助获取指定版本程序集及排查引用来源

问题解答

一、NuGet找不到4.0.0.0版本的System.ComponentModel.Composition原因

System.ComponentModel.Composition在.NET Framework 4.0里是框架自带的程序集,根本不需要通过NuGet安装。从.NET Framework 4.5开始,微软把这个程序集移到了NuGet包中,所以NuGet仓库里最低只有对应4.5框架的4.5.0版本,找不到4.0.0.0是正常现象。

二、获取4.0.0.0版本的方法

直接引用框架内置的程序集就行,操作步骤:

  • 右键你的项目 → 点「添加」→「引用」
  • 在弹出的窗口切到「程序集」→「框架」标签页
  • 找到System.ComponentModel.Composition,确认版本是4.0.0.0,点击确定添加

注意:如果你的项目目标框架不是.NET Framework 4.0,得先右键项目→「属性」,把目标框架改成4.0,不然可能找不到这个版本的程序集。

三、注释Web.config配置后,引用来源排查

可以从这几个地方找:

  • 项目文件(.csproj/.vbproj):用记事本或VS打开项目文件,搜<Reference>节点,大概率有类似这样的直接引用:
    <Reference Include="System.ComponentModel.Composition, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    
  • packages.config:如果项目用的是旧版NuGet管理,这个文件会记录所有安装的NuGet包,不过4.0版本的System.ComponentModel.Composition不是NuGet包,这个可能性不大
  • 自动隐式引用:有些.NET Framework项目模板会自动引用常用框架程序集,不用手动加配置或NuGet,属于隐式引用
  • 绑定重定向配置:看看Web.config里的<runtime>→<assemblyBinding>节点,可能有版本重定向规则,就算你注释了<add>节点,重定向配置还是会让项目加载对应版本的程序集

你提供的Web.config相关配置行:

<add assembly="System.Net.Http.WebRequest, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:25:47