如何通过 NuGet 更新未直接作为 PackageReference 引用的依赖项?

And*_*nov 7 visual-studio nuget

这个问题类似于这里描述的问题

当使用“遗留”样式的.csproj项目文件时,我们有一个单独的packages.config文件,其中列出了所有依赖项,包括可传递的。当安装具有依赖项的包然后决定可以手动更新哪些传递依赖项时,这将启用一个用例。所以,好处是:

  • 由于存在一个平面列表,依赖关系很容易识别
  • 对所有依赖版本的细粒度控制

例如,在安装后Autofac.WebApi2.Owin从的NuGet,我们有一个像图片这样

清晰可见的传递依赖可以很容易地手动更新。

使用新的 Sdk 样式.csproj项目时,NuGet 引用被添加<PackageReference/>到项目文件本身,并且传递依赖项由 MSBuild 静默引用:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net462</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Autofac.WebApi2.Owin" Version="4.0.0" />
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

因此,要更新传递依赖项,必须

  1. 识别它们(例如通过obj/project.assets.json
  2. 将所有这些显式添加到项目中
  3. 执行更新

这必须在每次更新后以及项目中的每个 (!) 传递依赖项之后完成,这显然几乎是不可能的。

可能的解决方案:

  • 自动向项目添加传递依赖项
  • 在 NuGet GUI 中显示可传递依赖项更新

不幸的是,在文档中没有找到这样的功能。

那么,是否有一种简单的方法可以从两个世界中获得最佳效果?

And*_*nov 5

目前不可能,但Github上已开放讨论。