2017-09-29 128 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。