c# - 将非托管 native 库文件包含到 nuget 输出目录中

标签 c# .net-core nuget nuget-package

未管理的共享对象(.so 文件)不会复制到输出目录:

我有一个 .netstandard 2 项目,它包装了一个 C++ 库(让我们称这个项目为 wrap.csproj)。
该项目依赖于共享对象 (libgdal.so)。

我想将此项目用作 nuget,因此,将引用我的 nuget 的项目应该在 build/publish 文件夹中包含 wrap.dll 和 libgdal.so。

我将此项目打包为 nuget。
但是引用此 nuget 的项目(dotnet 核心)没有得到 libgdal.so 文件,只是 build/published 文件夹中的 wrap.dll,因此我收到运行时错误。

我将此属性添加到 nuget csproj:

<ItemGroup>
<None Include="libgdal.so">
<Pack>true</Pack>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>

编辑:从@zivkan 的帮助中稍微看一下后,我成功了

我需要做的就是添加这样的包路径:
<ItemGroup>
    <None Include="libgdal.so">
        <Pack>true</Pack>
        <PackagePath>runtimes/linux-x64/native</packagePath>
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
</ItemGroup>

最佳答案

我需要做的就是像这样添加 PackagePath:

<ItemGroup>
    <None Include="libgdal.so">
        <Pack>true</Pack>
        <PackagePath>runtimes/linux-x64/native</PackagePath>
        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
</ItemGroup>

(我的运行时间是 linux-x64)

关于c# - 将非托管 native 库文件包含到 nuget 输出目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57394400/

相关文章:

c# - 在派生的 DbContext 中获取服务

nuget - 如何使用 dotnet CLI 一次更新所有 NuGet 包?

C# 和 PInvoke 到 32/64 位 DLL

visual-studio - 如何使用 PowerShell 获取 Visual Studio 中的项目版本?

c# - 显示 WCF Web 服务操作

c# - 基于分组的WCF服务响应设计c#

c# - 类成员与结构成员上的 volatile 写入的奇怪行为

c# - 尝试使用 ZipFile 类时在 System.IO.Compression 上出错

asp.net-mvc - 用于修改 Global.asax.cs 的 Nuget PowerShell 脚本

.net-core - .NET Core 应用程序是否可以从 AWS Certificate Manager 检索证书并在 HttpClient 帖子中使用它?