2010-05-21 33 views
3

我在Visual Studio 2008中有兩個使用MySql Connector for .NET(MySql.Data.dll)的.NET庫項目。這些庫反過來又被一個也使用連接器的.NET命令行應用程序使用。庫項目作爲git子模塊被引入到應用程序的解決方案中,並由Visual Studio中的項目引用。在使用git子模塊避免重複時,您應該在哪裏放置第三方.NET dll

我正在尋找最有效的策略來存儲和引用MySql連接器庫。

我曾嘗試將MySql.Data.dll簽入到所有三個項目(在其根文件夾中),當一個項目更改爲更新版本的連接器DLL時,這是有問題的。雖然每個項目都有自己的dll版本,但只有一個被打包到最終的應用程序中,導致API不匹配,難以確定。這使我擺脫了這種做法。

我已經嘗試讓命令行應用程序引用持有子模塊中的連接器dll,但是這隻會消除版本不匹配的可能性,因爲在這種情況下只有一個子模塊而不是兩個子模塊。

我正在考慮將dll放入需要構建或使用應用程序的所有機器的全局程序集緩存(GAC)中,但我擔心沒有源代碼管理中可用應用程序的所有依賴關係。

回答

1

不要在檢查他們在所有通過的NuGet http://nuget.org/

如果你喜歡,你可以建立自己的NuGet主機,以確保你所依賴的東西總是有將它們添加到項目中。

1

我通常有一個名爲extlib或依賴關係的文件夾,並將所有第三方dll放在該文件夾中。這將位於所有三個項目的根文件夾旁邊,並將作爲後期構建步驟複製到bin文件夾中。

你爲什麼不有類似

main/project1 
main/project2 
main/project3 
main/extlib 

基本上project1-3,EXTLIB都是獨立的git倉庫。

+0

當你說「這將駐留在所有三個項目的根文件夾旁邊」時,我不明白你如何用git來做到這一點。 這兩個庫項目完全不知道對方,你可以檢查它們到你係統上的任何位置。 – 2010-05-21 13:53:22

+0

我想他意味着在每個項目中引用extlib作爲子模塊。然後,dll的更新可以發佈到extlib,然後你的項目只需要執行'git submodule update'來更新它。 – 2010-06-22 16:43:14

+0

關於你的第4段:所有3個項目都應該將dll資源庫作爲子模塊引用:命令行應用程序和每個庫項目。 – 2010-06-22 16:45:54

相關問題