2014-01-16 64 views
2

在我的團隊工作中,我們依賴兩個NuGet源:NuGet.org的公共包和官方文件服務器上的文件夾。NuGet中的包依賴性解決方案和命名衝突

這對我們很有效,但我認爲我們有一個潛在的問題。它看起來像NuGet基於包名和版本號來解析依賴關係。只有一種飼料在玩,這似乎不是一個問題。如果有多個Feed,則存在名稱衝突的風險。基於NuGet的解析規則,它看起來會選擇最高版本號,而不管飼料。

這讓我們有一點點。這種情況不太可能發生,但如果有人要在NuGet.org上發佈與我們的內部Feed具有相同包名的軟件包,我們最終可能會包含一個意外的軟件包。

我能想到的兩種方法來解決此問題:

1)拉動,我們靠到我們的私人飼料的軟件包。雖然這是可行的,但由於不斷將包更新下載到我們的私人訂閱源中的管理負擔,這並不是非常吸引人。

2)通過NuGet.org提要發佈佔位符包以保留包名。這看起來好像會起作用,但對我來說感覺就像是一個黑客。

有沒有更好的方法?

感謝您的幫助!

回答

2

這可能與我們的產品ProGet(基本上這是一個私人的NuGet庫的附加功能)很容易實現,但功能這樣做,只在付費版本可用。基本上你會做什麼,只是指向Visual Studio中的ProGet託管的提要。默認情況下,ProGet供稿連接到官方NuGet.org供稿,並且能夠下載官方供稿中的所有包。

但是,如果你設置了一個「連接過濾器」:

* 
!YourPackageNameOrPrefix 

那就從官方飼料下載阻止具有相同的名稱和你的包。

如果您對第三方解決方案不感興趣,您可以隨時將您的軟件包命名爲不太可能被複制的內容(例如YourCompany.XXXXX),但這當然不會阻止任何人複製它故意。

+0

謝謝!產品建議和方法都非常有用! – Jacob