2016-12-30 67 views
2

我有大約10-15個獨立解決方案的項目,這些解決方案在微軟.NET商店中引用第三方DLL。我們想要解決的問題之一是跨項目使用的DLL版本的一致性(所有項目中的E.G. Netwonsoft 8.0.3,而不是獨立版本(取決於何時創建項目))。共享第三方DLL的NuGet或程序集文件夾?

我在前面的位置看到過兩種不同的方式,並想知道是否還有其他方法可以解決這個問題。

  1. 我在公司內的任何項目的解決方案中引用了所有第三方DLL的企業NuGet。 DLL將被更新,然後提供給項目中的開發人員,以便自行解決和升級(如果需要)解決方案。
  2. 另一家公司在源代碼中有一個程序集文件夾,其中包含所有「已批准」的第三方DLL,並且所有引用都位於此目錄中。

我沒有看到這個問題,但它只是提供了上述兩種解決方案之一:Where should you store 3rd party assemblies?

是否有其他的選擇除了上面列出的?

回答

1

儘可能使用NuGet。主要原因在於Git並沒有很好地處理大的二進制文件,並且使用LFS並沒有什麼意義,因爲有一個有效的選擇。 TFVC對較大的二進制文件的問題較少,但如果您使用TFVC,我會記住未來遷移到Git的問題。

請記住,在這種情況下,不僅NuGet,而且可能還有npm和其他包源。

如果要強制執行某個正在使用的版本,請創建一個自定義任務,並將其掛接到CI管道中。這樣,您可以輕鬆發出警告或設置某種策略。自定義任務可以採用packages.config文件,掃描引用的軟件包,然後查詢TFS/VSTS軟件包管理源以查看它是否使用最新版本(或正在使用最新的次要版本)...(或正在使用至少x版本)...或從某處獲取json文件或xml文件中的批准版本,並根據該文件進行驗證...

+0

使用NPM是我認爲是可能的絆腳石之一爲我們未來的項目和引用的程序集。你認爲公司的NuGet服務器將是一個更好的解決方案,以幫助減輕未來的這個問題嗎?說實話,我並不熟悉Node或NPM,但仍然掌握了所有這些工作的方法。 – missionearth

+0

我建議使用Proget或使用TFS2017軟件包管理功能來設置您自己的NuGet服務器。 – jessehouwing

0

在您的源代碼管理中,當存儲庫第一次填充時,使用所需的依賴項DLL提交併推送到主服務器。因爲即使在其他分支上的所有用戶都將從存儲庫中提取數據,所以您可以確保他們能夠收到所需的所有DLL。如果你指的是GAC中的DLL,這隻會成爲一個問題,GACUtil或者只是確保每個人都使用相同的Windows版本。