首页 > 解决方案 > 通过 `dotnet add package ..` 处理 nugets 与通过 Visual Studio UI 添加 nugets 的区别

问题描述

我需要在通过 nuget 发布的c库中使用本机库(支持多个Core TFs 和)。.net framework我通过.csproj文件和runtimes文件夹配置它。但是我注意到,在某些情况下,当我通过 NuGet 使用dotnet add package ..时,本机库在使用后不会复制到预期的文件夹中,但是当我使用VSUI Nuget package manager->Manage Nuget Packages for Solution时,所有文件都放置在正确的位置。
所以,我认为这Nuget package manager不仅仅是 call 步骤dotnet add package ..,但目前还不清楚到底发生了什么,任何帮助将不胜感激。

标签: visual-studio.net-corenugetnuget-packagemanage-nuget-packages

解决方案


实际上,与VS IDE 中的Nuget 包管理器 UIdotnet add package的效果相同。他们只是将 Nuget 包安装到您的项目中,没有区别。不会执行其他操作。就像在中添加一些 xml 节点

所以我认为你的项目还有其他问题。

请查看以下提示以解决您的问题:

1) 首先清理 nuget 缓存或仅删除C:\Users\xxx(current user)\.nuget\packages.

2)如果runtimes您的项目下不存在该文件夹,我认为它是由dependency assets. 喜欢ExcludeAssets=runtime or native。它将阻止runtimes文件夹的功能。请看这个官方文档

所以在你安装完nuget包后,你应该检查你的csproj文件,并确保没有这样的

<ExcludeAssets>runtime;native</ExcludeAssets>

PackageReference节点下。

如果有这个节点,请删除。

3)删除binobj文件夹。然后重建您的项目以再次测试。或者,如果您使用 dotnet 命令行,则应另外添加 dotnet build命令。在我身边,我跑dotnet build -p:platform=xxx;Configuration=Release


推荐阅读