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