2017-01-09 56 views
0

我有一個包的依賴情況如下: 錯誤:爲什麼我的依賴軟件包沒有解決?

試圖收集依賴信息包「PkgB.2.0.414」相對於項目的測試NuGet包使用方法「,定位」 .NETFramework,版本= v4.5' 嘗試使用DependencyBehavior'Lowest'解決程序包「PkgB.2.0.414」的依賴關係 無法解析依賴關係'PkgC.1.0.0'。使用的源代碼:'nuget.org','公司包源代碼','本地測試','Microsoft和.NET','Microsoft Visual Studio Offline Packages'。

形勢答: PkgA => PkgC

情況B: 則pkgB => PkgA => PkgC

當我安裝情況的它的工作原理。當我安裝情況B它的作品。但是,如果我安裝A然後B它即使已經安裝並且工作正常但未能找到Pkg C.

請記住以下環境:

這些都是安裝精細各自分別所有軟件包。 這個問題只有發生在使用NuGet飼料服務器。 我沒有使用包共享作爲安裝源的問題。

來源: 我看過NuGet文檔的版本和最近的算法,但我不明白我會違反它。

https://docs.nuget.org/ndocs/consume-packages/dependency-resolution#dependency-resolution-in-nuget-3-x

而且我沒有看到指定的版本如何要麼關係。 https://docs.nuget.org/ndocs/create-packages/dependency-versions#dependency-versions

我自己的結論:

好像問題是飼料服務器和它是如何發現的依賴關係。我正在看git上的NuGet.Server源碼,但還沒有注意到任何東西。我最終可能會放棄源代碼並找出它。

不管這種情況如何,不管飼料來源的類型如何?

編輯:

這是一個私人的NuGet飼料和私人nugets不在,我可以公開分享任何回購協議。

我在這裏引用的版本> =表示法來構建參考樹。

<!-- Accepts any version 6.1 and above --> 
<dependency id="ExamplePackage" version="6.1" /> 
+0

PkgA,PkgB和PkgC是所有的依賴包還是它們之間有一些依賴關係?如果可能的話,請在這裏分享這些軟件包(不是您的nuget feed)以幫助我們重現此問題。 –

+0

Wendy我列出了上面的依賴關係,但我沒有具體說明它們是依賴關係。情況A:PkgA => PkgC情況B:PkgB => PkgA => PkgC是依賴線以及安裝情況。 –

回答

0

它看起來就像是的NuGet高速緩存的組合是本地。

我執行以下命令清除它們。

VS2015不斷抱怨安裝相同的軟件包版本,因爲我一直在1.0.0.0版本和1.0.0版本之間亂搞,這是有道理的。

https://docs.microsoft.com/en-us/nuget/consume-packages/managing-the-nuget-cache

我發出的每個命令,並重新啓動能夠完全清空緩存。它現在可以工作,我不再會遇到問題。

+0

感謝您在此處分享您的解決方法。請稍後標記您的答案。對於有同樣問題的其他社區是有益的。 –

0

我同意你的看法,「這種情況不管飼料來源的類型如何」。

對於安裝A和B,它會失敗:請確認情況B中的Pkg A,Pkg C的依賴版本的約束是否與情況A一致。如果依賴性Pkg A,Pkg C與情況A中的高版本先安裝,然後安裝具有較低版本依賴性的情況B,則安裝將失敗。同樣的問題:Is there an OData dependency graph somewhere

對於供稿源:請檢查NuGet供稿服務器中的Pkg A和Pkg B的包版本是否與Share包文件夾一致。

如果這個問題仍然存在,只是分享我們的NuGet包ID,我會瑞普它在我的身邊:)