Nuget安装的Package是否可包含其他子包?如何查看包内子包?
NuGet 包依赖常见问题解答
安装的NuGet包是否会包含其他已安装的包
NuGet 包本身不会内嵌其他已安装的依赖包,采用的是依赖声明机制:包作者会在包的配置文件中提前标注该包正常运行所需的其他NuGet包的版本适配范围。当你安装目标包时,NuGet会自动检测当前项目已安装的包是否符合依赖版本要求:如果符合则直接复用现有包,如果不符合则自动安装适配版本的依赖包到项目中,不会出现多个包重复内嵌公共依赖的冗余情况。
查看指定包的依赖(子包)的方法
你可以根据自己的使用场景选择以下方式查询:
- Visual Studio UI 可视化查询
右键点击目标项目 -> 选择「管理NuGet程序包」-> 切换到「已安装」标签页,点击你需要查询的包,右侧详情面板会直接列出该包的所有一级依赖项以及对应的版本要求。 - 使用命令行查询
打开项目根目录的终端,执行如下命令可以查看项目所有包包括传递依赖在内的完整依赖树:dotnet list package --include-transitive
如果要单独查询指定包的依赖,可以执行:nuget list <目标包ID> -IncludeDependencies - 直接查看项目配置文件
如果你使用 PackageReference 格式管理包,打开项目的.csproj文件可以查看所有一级直接依赖;如果你使用 packages.config 格式管理包,直接打开项目根目录下的packages.config文件即可看到所有已安装的包,包括安装主包时自动安装的依赖包。
内容的提问来源于stack exchange,提问作者user17003736
相关产品推荐
相关产品推荐

