2012-03-26 68 views
3

我們有一個VS2010解決方案,其中包含一個Windows窗體應用程序和4個類庫(DLL)項目。 (這些類庫是BusinessTier,DataTier,CommonCode,ControlLibrary等)。整個事件是針對框架2.0的。三年來一直如此。組織兩個類似產品的Visual Studio解決方案

所以我們的應用程序已經發展到哪裏,我們要添加大量新功能和營銷想將其部署爲一個單獨的產品的地步。我們的產品用於填寫稅表,第二種產品將填寫其他稅表。

我們希望最終得到兩個exe(兩個安裝MSI),它們將獨立銷售/安裝/更新,並且可以同時在同一臺計算機上運行。大部分代碼在兩個應用程序之間是相同的。

我想找出構建解決方案以創建所需結果的最佳方法。

1)選擇一可以創建一個新的EXE項目和幾個新的DLL項目在相同的原始解決方案(說在一個解決方案文件夾中)與大多數代碼文件具有唯一的名稱,版本,guids等作爲鏈接返回到原始類似DLLS中的代碼文件。這使我們可以擁有兩個完全獨立的系統,併爲所有文件,版本號等提供唯一的名稱,但允許對每個項目/ dll進行任何定製。這是一個好主意還是矯枉過正?

2)選項二將在解決方案中創建一個新的exe項目並鏈接到與第一個exe項目相同的dll。這似乎很簡單,但我不知道是否有兩個使用相同DLL的項目是一個好主意。我真的不想使用GAC。如果我們有兩個使用相同Dll的exe(即使它們將位於不同的應用程序文件夾中),但如果DLLS具有相同/不同的版本號,名稱或GUID,則會出現問題?

你有什麼想法?

我應該如何重構解決方案以適應新產品?

回答

1

轉到選項2

沒有與具有相同名稱相同的dll沒有問題。如果您將exes部署到單獨的文件夾或將它們保存在單獨的文件夾中,它將以任何方式工作。

我甚至會走得更遠,看看如何將應用程序進一步分解爲更多的程序集/ dll,因爲它會給你更多的靈活性。我還會爲AssemblyInfo提供一個單獨的文件,並將其作爲鏈接文件添加到所有項目中。這意味着你的所有dll/ex都有單一版本。 http://vsh.infozerk.net/options/add-an-existing-file-to-a-project-without-copying-it/

+0

如果我們不將它暴露給COM,那麼程序集GUID與DLL的功能沒有任何關係,這是真的嗎?程序集信息文件具有對GUID的引用。因此,將這個文件共享意味着該GUID在項目中的所有組件中都是通用的。 – 2012-03-27 01:32:33

+0

它很好,一直都在做。有很多常用的.net庫,它們一直都在您的PC上部署。對於一些第三方libries,Telerik,componentone,其他隨機開源dll將在您的電腦上的許多不同位置。相同的程序集(相同版本和不同版本)將在您的電腦上安裝不同的應用程序。每個.net應用程序是分開的。 – JonAlb 2012-03-28 19:31:11