2017-09-29 81 views
0

我有两个NuGet包。套餐一,套餐二。 Package 2需要与Package One版本1.0或更高版本有依赖关系。NuGet忽略较新版本的依赖关系

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

我遇到的问题是Package Two仍在尝试查找1.0版旧版本的Package One的.dll。然而,已经安装并可以使用的新版本,就好像它忽略了它。

程序包2与package.nuspec文件中Package One的版本1.0或更高版本存在依赖关系。

有什么办法可以解决这个问题吗?

+0

怎么样这个问题?你解决了吗?如果没有,请让我知道,我会继续关注它。 –

+0

@ Leo-MSFT是的,我设法修复它。对于长时间的回应,我很抱歉,我无法使用你的答案或马特的回答,因为我没有分配任何有关Nuget的工作一段时间。 –

回答

1

有什么办法可以解决这个问题吗?

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

用的NuGet 2.5或更高版本,如果依赖版本已经满足,没有其他期间更新的依赖包装安装。

因此1.0是一个正确的默认依赖关系解决方案。

由于NuGet v2.8,我们可以使用其他依赖解析算法:

虽然2.8的NuGet更改默认行为解决 的依赖,它也可通过-DependencyVersion开关增加了依赖 解析过程更精确的控制包 管理器控制台。该交换机可以将依赖关系解析为最低版本(默认行为),最高可能版本 或最高版本或补丁版本。

对那些依赖解析算法的详细信息,请查看以下文件:

https://docs.microsoft.com/en-us/nuget/tools/ps-ref-install-package

enter image description here

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

Install-Package PackageTwo -DependencyVersion Highest 

或者通过花费选项选择从管理NuGet包UI:

enter image description here

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。