【发布时间】:2021-07-31 04:57:22
【问题描述】:
我制作了一个 NuGet 包 Askaiser.Marionette,它针对 .NET Standard 2.0/2.1 和 .NET 5。
它的两个依赖项是OpenCvSharp4 和OpenCvSharp4.runtime.win(Windows x64/x86 的本机 OpenCV 绑定)。
每当我在 .NET Core 应用程序或 .NET 5 应用程序中使用我的包时,任何 OpenCvSharp4 方法效果都很好,因为在构建输出目录中有这个 runtimes 目录包含原生 OpenCV 库:
Debug/<netcoreapp3.1>/
├── <...>
└── runtimes/
├── unix/<...>
├── win/<...>
├── win-x64/native/OpenCvSharpExtern.dll
└── win-x86/native/OpenCvSharpExtern.dll
但是,如果我的应用程序以 .NET Framework(net461 到 net48)为目标,则此 runtimes 目录在构建输出目录中丢失,导致任何 OpenCV 失败包裹的方法。
当消费者应用程序还安装两个 OpenCvSharp4 包时,此问题已得到修复。
为什么消费者应用程序需要安装 OpenCvSharp4 包才能在 .NET Framework 上运行?现在,任何试图在 .NET Framework 上使用我的包的人都必须这样做。这不方便。
如果有帮助的话,这就是我生成的.nuspec 的样子:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>Askaiser.Marionette</id>
[...]
<dependencies>
<group targetFramework="net5.0">
<dependency id="OpenCvSharp4" version="4.5.2.20210404" exclude="Build,Analyzers" />
<dependency id="OpenCvSharp4.runtime.win" version="4.5.2.20210404" exclude="Build,Analyzers" />
<dependency id="Tesseract" version="4.1.1" include="All" />
<dependency id="Tesseract.Drawing" version="4.1.1" exclude="Build,Analyzers" />
</group>
<group targetFramework=".NETStandard2.0">
<dependency id="OpenCvSharp4" version="4.5.2.20210404" exclude="Build,Analyzers" />
<dependency id="OpenCvSharp4.runtime.win" version="4.5.2.20210404" exclude="Build,Analyzers" />
<dependency id="System.Text.Json" version="5.0.2" exclude="Build,Analyzers" />
<dependency id="Tesseract" version="4.1.1" include="All" />
<dependency id="Tesseract.Drawing" version="4.1.1" exclude="Build,Analyzers" />
</group>
<group targetFramework=".NETStandard2.1">
<dependency id="OpenCvSharp4" version="4.5.2.20210404" exclude="Build,Analyzers" />
<dependency id="OpenCvSharp4.runtime.win" version="4.5.2.20210404" exclude="Build,Analyzers" />
<dependency id="System.Text.Json" version="5.0.2" exclude="Build,Analyzers" />
<dependency id="Tesseract" version="4.1.1" include="All" />
<dependency id="Tesseract.Drawing" version="4.1.1" exclude="Build,Analyzers" />
</group>
</dependencies>
[...]
</metadata>
</package>
【问题讨论】:
标签: .net nuget nuget-package