You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin Forms PCL升级.NET Standard后NuGet依赖包不显示问题咨询

这个问题我之前升级.NET Standard的时候也碰到过,其实是NuGet依赖管理的逻辑变了,咱们一步步来理清楚:

为什么依赖包不再显示?

在PCL时代,NuGet默认用packages.config管理依赖,所有直接、间接依赖都会被显式安装到各个平台项目(比如Android)里,所以NuGet资源管理器能看到所有包。但升级到.NET Standard 2.0后,项目默认切换到了PackageReference格式——这种模式下,你只需要在.NET Standard项目里安装直接依赖的包(比如Xam.Plugin.Geolocator),它的间接依赖会由NuGet自动解析、恢复,并且默认不会在NuGet资源管理器的「已安装」列表里展示(UI只显示你手动安装的包)。但这些依赖其实已经被正确引入项目了,所以你的应用能正常运行。

如何查询依赖包的版本?

给你几种实用的方法:

  • 用NuGet包管理器控制台查询:
    打开Visual Studio的「工具」->「NuGet包管理器」->「包管理器控制台」,运行以下命令(替换成你的项目名称):

    Get-Package -ProjectName YourNetStandardProjectName -IncludeTransitive
    

    这个命令会列出项目所有直接和间接依赖,包括每个包的版本号。

  • 查看项目文件或assets文件:

    1. 直接打开你的.NET Standard项目的.csproj文件,里面的<PackageReference>节点记录了你手动安装的包;
    2. 查看项目目录下obj文件夹里的project.assets.json文件——这是NuGet恢复依赖时生成的,里面详细记录了完整的依赖树,包括每个间接依赖的版本号和来源。
  • 使用dotnet CLI命令:
    打开命令行,导航到你的.NET Standard项目所在目录,运行:

    dotnet list package --include-transitive
    

    这会输出清晰的依赖链,每个包的名称和版本都会明确显示。

  • 在NuGet UI里显示间接依赖:
    如果你还是想在NuGet资源管理器的UI里看到所有依赖,可以在Visual Studio里调整设置:打开NuGet包管理器,点击右上角的齿轮图标进入设置,找到「包管理」->「默认包管理格式」,确认是PackageReference后,回到「已安装」标签,勾选「显示传递包」(不同VS版本位置可能略有不同,一般在搜索框附近),这样就能看到所有间接依赖了。

内容的提问来源于stack exchange,提问作者aherrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:03:54