我有两个NuGet包。套餐一,套餐二。 Package Two需要具有依赖性,因为Package One版本1.0或更高版本。
我对Package One做了一些小改动,并将NuGet Package重新构建为1.0.1版本。我没有对Package Two NuGet包进行任何更改。我还在我正在处理的解决方案中更新了Package One。
我遇到的问题是Package Two仍在尝试寻找1.0版的Package One的旧版本.dll。然而,已经安装并可以使用的是更新的版本,就像它忽略了它一样。
Package 2具有package.nuspec
文件中Package One 1.0或更高版本的依赖关系。
有什么方法可以解决这个问题吗?
答案 0 :(得分:3)
有什么方法可以解决这个问题吗?
就像马特回答" 这是NuGet的默认行为":
使用NuGet 2.5及更高版本,如果已经满足依赖版本,则在其他软件包安装期间不会更新依赖关系。
所以1.0是正确的默认依赖关系解析。
从NuGet v2.8开始,我们可以使用其他依赖项解析算法:
虽然NuGet 2.8更改了解析的默认行为 依赖性,它还增加了对依赖性的更精确控制 通过包中的-DependencyVersion开关解析进程 经理控制台。该交换机可以解决依赖关系 尽可能低的版本(默认行为) 版本,或最高版本或补丁版本。
有关这些依赖性解析算法的详细信息,请查看以下文档:
https://docs.microsoft.com/en-us/nuget/tools/ps-ref-install-package
要解决此问题,您可以在程序包管理器控制台中使用以下命令:
Install-Package PackageTwo -DependencyVersion Highest
或者通过扩展选项:
从Manage NuGet包UI中选择它答案 1 :(得分:1)
这是NuGet的默认行为,它将安装依赖项的最低补丁版本。
https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution
您可以在NuGet.Config中全局覆盖它,例如:
<add key="DependencyVersion" value="HighestPatch" />
或者您可以在Visual Studio中安装NuGet包时指定。
否则,您将继续修改Package Two以依赖PackageOne的1.0.1,这可能不是您想要做的,因为Package Two仍然可以使用旧版本的Package One。