我需要在我的库中使用本机 C 库(支持多个 Core TF 和 .NET Framework),该库是通过 NuGet 发布的。我通过 .csproj 文件和运行时文件夹进行配置,但我注意到,在某些情况下,当我通过
dotnet add package ...
使用 NuGet 时,本机库在使用后不会复制到预期文件夹中,但是当我使用 Visual Studio 时NuGet 包管理器并选择“管理解决方案的 NuGet 包”,所有文件都放置在正确的位置。
因此,我认为 NuGet 包管理器执行的步骤不仅仅是调用
dotnet add package ...
,但尚不清楚到底发生了什么。
实际上,
dotnet add package
与 NuGet 包管理器执行相同的操作:它们都将 NuGet 包安装到您的项目中。不会执行任何额外操作。
所以我认为你的项目还有其他问题。
请检查下面的提示来解决您的问题:
先清理 NuGet 缓存,或者删除
C:\Users\xxx(current user)\.nuget\packages
下的所有缓存文件。
如果你的项目下不存在runtimes文件夹,我认为它是由依赖资产控制的。就像
ExcludeAssets=runtime or native
。它将阻止运行时文件夹的功能。请参阅此官方文档。
安装完 NuGet 包后,您应该检查 .csproj 文件,并确保没有类似的内容
<ExcludeAssets>runtime;native</ExcludeAssets>
在
PackageReference
节点下。
如果该节点下有此类内容,请删除。
删除您的
bin
和 obj
文件夹。然后重建项目以再次测试。或者,如果您使用命令行,则应该另外添加一个 dotnet build
命令。在我身边,我奔跑dotnet build -p:platform=xxx;Configuration=Release
。