Sam*_*ura 6 assembly-resolution nuget .net-5
这个问题涉及 .NET 5+,而不是 .NET Framework。
考虑以下依赖树:
MyWebsiteRandomWebLibrary有对1.0.0 和2.0.0的包引用RandomJsonLibrary。RandomWebLibrary1.0.0 具有对 1.0.0 的包引用RandomJsonLibrary。RandomJsonLibrary没有依赖项。我的问题:
RandomJsonLibrary运行时将加载什么版本?RandomJsonLibrary如果2.0.0 的 API 与RandomJsonLibrary1.0.0完全不同会发生什么?MyWebsite存在多个版本而引起的问题吗?RandomJsonLibrary.NET 5+ 中是否存在与 .NET Framework 绑定重定向等效的功能?我是出于好奇才问的,而不是因为我遇到了问题。作为参考,这里是关于Understanding AssemblyLoadContext 的文档,它似乎相关,但没有回答我的问题。
文档页面NuGet 如何解决包依赖关系回答了这些问题。由于我们正在谈论 .NET 5+,因此“使用 PackageReference 进行依赖项解析”部分与此问题相关。
当应用程序的包图表包含同一包的不同版本时,NuGet 会选择图表中最接近应用程序的包并忽略所有其他包。此行为允许应用程序覆盖依赖关系图中的任何特定包版本。
在下面的示例中,应用程序直接依赖于版本约束为 >=2.0 的包 B。该应用程序还依赖于包 A,而包 A 又依赖于包 B,但具有 >=1.0 约束。由于对 Package B 2.0 的依赖关系更接近图中的应用程序,因此使用该版本:
回答原来的问题:
RandomJsonLibrary2.0.0 将在运行时加载。RandomWebLibrary将会在运行时抛出异常。RandomJsonLibraryMyWebsite可以通过将任何依赖包直接安装到MyWebsite. 对于 的情况RandomJsonLibrary,作者MyWebsite可能应该降级到RandomJsonLibrary1.0.0 以防止RandomWebLibrary损坏。据我所知,.NET 5+ 中没有绑定重定向。| 归档时间: |
|
| 查看次数: |
2272 次 |
| 最近记录: |