如何制作具有系统依赖性的 nuget 包?

How to make a nuget package that have a system dependency?

我想开发一个 C# 绑定到大多数 Linux 发行版(即 libnauty-dev )上可用的包。类似于:https://github.com/zajer/onauty .

在 OCaml 中,我可以制作一个虚拟 OPAM 包,它只检查系统上是否安装了所需的系统包,如果是,则将安装此 OPAM 包。此外,OPAM 包始终与源代码 afaik 一起分发,因此将 c 存根与实际 OCaml 代码捆绑在一起没有问题。

这是我的问题:

  1. 如何将 .so 文件与我的 nuget 包捆绑在一起?
  2. 如何查看系统是否有必要的系统包?

编辑 1: 为了稍微澄清一下,我需要其中一个问题的答案,因为如果我可以分发带有 .so 库的 nuget 包,那么这就是我所需要的。但是,如果无法使用 nuget 分发 .so 文件,那么我需要在安装时构建它。为此,我需要检查系统上是否提供所需的软件包。

是的,您可以在 NuGet 包中包含任意文件。 F.e。将libnauty-dev.so添加到.csproj所在的文件夹中,并将其添加到.csproj中,告诉它将二进制文件复制到输出目录并打包:

<ItemGroup>
  <None Include="libnauty-dev.so" Pack="true" PackagePath=".\">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    <PackageCopyToOutput>true</PackageCopyToOutput>
  </None>
</ItemGroup>