【发布时间】:2017-09-14 09:03:35
【问题描述】:
这个问题与here 描述的问题相似。
当使用“传统”风格的.csproj 项目文件时,我们有一个单独的packages.config 文件,其中列出了所有依赖项,包括传递的依赖项。当安装具有依赖项的包然后决定可以手动更新哪些传递依赖项时,这将启用一个用例。所以,好处是:
- 由于存在平面列表,因此可以轻松识别依赖关系
- 对所有依赖版本的细粒度控制
例如,从 NuGet 安装 Autofac.WebApi2.Owin 后,我们有一个类似 this 的图片:
清晰可见的传递依赖可以很容易地手动更新。
当使用新的 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>
因此,要更新传递依赖项,必须
- 识别他们(例如通过
obj/project.assets.json) - 将它们全部显式添加到项目中
- 执行更新
这必须在每次更新后以及项目中的每个(!)传递依赖项之后完成,这显然几乎是不可能的。
可能的解决方案:
- 自动向项目添加传递依赖项
- 在 NuGet GUI 中显示传递依赖更新
很遗憾,在文档中没有找到这样的功能。
那么,有没有一种简单的方法可以从两个世界中获得最佳效果?
【问题讨论】:
-
我已经用更多信息更新了答案,你可以检查它是否对你有帮助。现在这个问题呢?请告诉我有关此问题的最新信息吗?
-
@Leo-MSFT 感谢您的回答,它是有效的,但不幸的是并没有完全实现目标。要更新依赖项,我仍然必须手动遍历整个树。因此,没有一键更新的平面列表。
标签: visual-studio nuget