当间接引用为 NuGet 依赖项时,不会复制本机依赖项

Native dependencies not copied when indirectly referenced as a NuGet dependency

我有一个内部 NuGet 包依赖于另一个具有本机依赖项的 NuGet 包。在 .NET SDK 控制台应用程序中,我引用内部 NuGet 包并间接引用具有本机依赖项的其他 NuGet 包。

间接引用原生依赖的NuGet包时,原生依赖没有正确复制到bin目录下

如果带有原生依赖的 NuGet 包直接安装为直接依赖,那么原生依赖会被正确复制过来。

是否会一直如此,我们只需要将具有本机依赖项的 NuGet 包作为直接依赖项添加到任何使用我们内部 NuGet 包的项目中?或者是否可以将某些东西添加到我们的内部 NuGet 包中,或者可以将某些东西添加到其他 NuGet 包中,以便在间接引用时让本机依赖项正确复制?

我们的内部 NuGet 包是通过 dotnet pack 使用 csproj 文件中的信息创建 NuGet 包构建的。

我能够使用这里描述的包引用修饰符解决这个问题Controlling dependency assets

PrivateAssets 的默认设置是防止内容文件、分析器和构建文件传播到引用项目。本机文件位于我引用的 NuGet 包的构建文件夹中以及 .targets 文件以定义需要复制的文件。将 PrivateAssets 更改为仅排除内容文件和分析器,解决了下游项目未正确复制本机文件的问题。

<PackageReference Include="SomeLibraryWithNativeDependenciesInTheBuildFolder" Version="1.2.3">
  <PrivateAssets>contentfiles,analyzers</PrivateAssets>
</PackageReference>