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

为何NuGet包依赖的runtimes目录在.NET Core+输出,.NET Framework中缺失

问题根因

  1. 你的.nuspec配置中,对OpenCvSharp4和OpenCvSharp4.runtime.win两个依赖都设置了exclude="Build,Analyzers"属性。OpenCvSharp原生库的复制逻辑完全依赖自身包内的build目标文件实现,你排除了Build部分后,这些复制逻辑不会传递到引用你包的项目中。
  2. .NET Core/.NET 5+ 本身原生支持NuGet运行时RID资产的自动识别和复制,就算排除了Build目标,也会自动将runtimes目录下的原生资产复制到输出目录;但.NET Framework没有这套原生逻辑,完全依赖NuGet包自带的build目标完成原生dll的复制,因此就出现了runtimes目录缺失的问题。
  3. 你当前的.nuspec没有单独针对.NET Framework的依赖组,.NET Framework项目引用你的包时会复用.NET Standard 2.0的依赖配置,自然继承了exclude属性,所以触发了该问题。

修复方案

  • 方案1:移除OpenCvSharp4和OpenCvSharp4.runtime.win依赖上的exclude="Build,Analyzers"属性,让OpenCvSharp自带的build目标可以正常传递到引用你包的项目中,.NET Framework项目就能自动完成runtimes目录的复制。
  • 方案2:如果你确实需要排除这两个包的代码分析器,可以将exclude属性调整为仅排除Analyzers,即修改为exclude="Analyzers",保留Build部分的导入即可。
  • 方案3:如果有特殊需求必须排除Build部分,你可以在自己的NuGet包中新增针对.NET Framework的build目标,自行实现OpenCvSharp原生dll的复制逻辑,不过该方案成本较高,不推荐优先使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 06:06:03