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

.NET5类库引入同框架Web项目时触发依赖程序集加载失败报错

错误成因
  • 核心原因是类库的Nuget依赖未向上传递:默认情况下类库项目的Nuget依赖为私有属性,上层Web应用引用类库时不会自动安装类库用到的第三方包,类库本身编译时可从本地缓存加载依赖所以运行正常,但Web应用运行时找不到对应程序集文件。
  • 依赖版本冲突:类库和Web应用引用了同一Nuget包的不同版本,且项目缺少有效的绑定重定向配置,导致运行时无法定位到指定版本的程序集。
  • 生成配置异常:类库生成时未将依赖的第三方程序集复制到输出目录,Web应用生成流程也未主动拉取对应依赖,最终运行目录下缺少对应dll文件。
解决办法
  • 修改类库的依赖传递属性:打开类库的.csproj文件,给所有第三方Nuget包的PackageReference节点添加PrivateAssets="none"配置,示例如下:
<PackageReference Include="Portable.BouncyCastle" Version="1.9.0" PrivateAssets="none" />
<PackageReference Include="Newtonsoft.Json" Version="你使用的版本号" PrivateAssets="none" />

该配置会强制依赖向上层项目传递,Web应用引用类库时会自动安装对应的Nuget包。

  • 解决版本冲突问题:统一类库和Web应用中所有第三方依赖的版本,或在Web应用的配置文件中添加绑定重定向规则,示例如下:
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="BouncyCastle.Crypto" publicKeyToken="0e99375e54769942" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-1.9.0.0" newVersion="1.9.0.0" />
    </dependentAssembly>
    <!-- 其他存在版本冲突的包按相同格式添加配置 -->
  </assemblyBinding>
</runtime>
  • 快速验证方案:直接在Web应用项目中手动安装所有类库用到的第三方Nuget包,确保安装版本和类库中引用的版本完全一致。
  • 校验两个项目的目标框架配置,确保二者均使用完全相同的.NET 5版本,避免因框架不兼容导致的依赖加载失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:15:06