Visual studio NuGet忽略较新版本的依赖项

Visual studio NuGet忽略较新版本的依赖项,visual-studio,nuget,nuget-package,Visual Studio,Nuget,Nuget Package,我有两个NuGet软件包。一号包和二号包。包2需要与包1版本1.0或更高版本具有依赖关系 我对包1做了一个小改动,并将NuGet包重新构建到1.0.1版本。我没有对包Two NuGet包做任何更改。我还更新了我正在使用的解决方案中的包1 我遇到的问题是,包2仍在尝试查找1.0版包1的.dll,这是一个旧版本。然而,有一个更新的版本已经安装并可供使用,就好像它忽略了它 包2在Package.nuspec文件中与包1具有版本1.0或更高版本的依赖关系 有没有办法解决这个问题 这是NuGet的默认行为

我有两个NuGet软件包。一号包和二号包。包2需要与包1版本1.0或更高版本具有依赖关系

我对包1做了一个小改动,并将NuGet包重新构建到1.0.1版本。我没有对包Two NuGet包做任何更改。我还更新了我正在使用的解决方案中的包1

我遇到的问题是,包2仍在尝试查找1.0版包1的.dll,这是一个旧版本。然而,有一个更新的版本已经安装并可供使用,就好像它忽略了它

包2在
Package.nuspec
文件中与包1具有版本1.0或更高版本的依赖关系


有没有办法解决这个问题

这是NuGet的默认行为,它将安装依赖项的最低补丁版本

您可以在NuGet.Config中全局覆盖此选项,例如:

<add key="DependencyVersion" value="HighestPatch" />

或者,您可以在Visual Studio中安装NuGet包时指定此选项

否则,您将不得不修改包2以依赖于PackageOne的1.0.1,这可能不是您想要做的,因为包2仍将使用包1的旧版本

有没有办法解决这个问题

正如Matt回答“这是NuGet的默认行为”:

对于NuGet 2.5及更高版本,如果已经满足依赖项版本,则在其他包安装期间不会更新该依赖项

因此,1.0是正确的默认依赖项解析

因为,我们可以使用其他依赖项解析算法:

尽管NuGet 2.8更改了解析的默认行为 依赖关系,它还增加了对依赖关系的更精确控制 通过包中的-DependencyVersion开关解析过程 管理控制台。该开关允许将依赖项解析为 可能的最低版本(默认行为),可能的最高版本 版本,或最高次版本或修补程序版本

有关这些依赖项解析算法的详细信息,请查看以下文档:

要解决此问题,可以在Package Manager控制台中使用以下命令:

Install-Package PackageTwo -DependencyVersion Highest
或者通过扩展选项从Manage NuGet package UI中选择它:


这个问题怎么样?你解决了吗?如果没有,请告诉我,我会继续关注它。@Leo MSFT是的,我设法解决了它。很抱歉回复太长,我无法使用您或Matt的答案,因为我有一段时间没有被指派做任何与Nuget相关的工作。