未管理的共享对象(.so文件)没有复制到输出目录:
我有一个.NET Standard 2项目,它包装了一个C++库(我们称之为wrap.csproj)。该项目依赖于共享对象(libgdal.so)。
我想将此项目用作NuGet,因此引用我的NuGet的项目应在build/publish文件夹中具有wrap.dll和libgdal.so。
我将此项目打包为NuGet。但是引用此NuGet的项目(.NET Core)在build/published文件夹中只获得了wrap.dll文件,而没有libgdal.so文件,因此我遇到了运行时错误。
我向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>