2009-10-02 203 views
0

我是我工作的公司的內部網開發人員,過去5年來我一直在這樣做。我的項目分爲兩個解決方案,即「Intranet」解決方案本身和「圖書館」解決方案。 「圖書館」sln本身有幾個包含DAL,BLL等的項目。我之所以把它們放在不同的解決方案中是因爲我認爲「也許」,有一天我的圖書館sln也可以用於其他項目 - 你知道重用我已經寫過的代碼:)那麼,那從來沒有發生過。現在,因爲它更容易讓所有項目都在同一個.sln中,所以我正在考慮這樣做。這是一個明智的情況嗎?如果你在我的鞋子裏,你會怎麼做?將所有項目添加到相同的解決方案?

+0

現在每個解決方案中有多少個項目? – dove 2009-10-02 12:38:14

回答

2

在過去,我已經在多個解決方案中使用和重複使用了相同的「項目」 - 我真的只是將解決方案看作是項目集合的「特定」實例。例如,對於相同的整體軟件,我們可能會有不同的解決方案,這取決於我們想要在單個測試中(在他們自己的項目中)和/或集成測試(在單獨的項目中),並且我們會爲我們即將做的事情打開正確的解決方案。這樣,如果您使用單元測試進行正常編碼,則不必每次都創建集成測試代碼,反之亦然。

唯一需要注意的是將一個項目引入到一個解決方案中,該解決方案依賴於很多其他項目/解決方案,然後「意外」更改其中的代碼而不意識到它在側面項目而不是主要碼。然後,你可以開始打破依賴它的其他項目的負載而沒有意識到!

+1

使用持續集成,如cruisecontrol.net將幫助您實現更改依賴關係的時間。 – dar 2009-10-02 12:53:01

+0

這是非常真實的 - 這裏唯一的問題是您是否持續集成應用程序阿雷阿dy發佈,並沒有積極的工作! – 2009-10-04 12:06:17

0

是的,你可以做到!由於項目設置存儲在特定項目文件(csproj,vbproj,...)中,您仍然可以重用您的DAL和BLL。還有依賴關係存儲在那裏,所以沒有問題和好去。我有一個插件架構,對於每個插件包,我都需要addin-host,它包含在幾個解決方案文件中。我從來沒有遇到過任何問題。在文本編輯器中打開* .sln文件以查看其內容......只是指向項目的鏈接。

0

只需將您的圖書館項目添加到您的Intranet sln。保持您的圖書館解決方案。

0

我個人都將它們添加到相同的解決方案,是的。也就是說,如果您計劃在其他項目中使用解決方案中的某些庫,則無關緊要:您仍然可以將編譯後的dll添加到這些解決方案中,或者您可以選擇將它們作爲現有項目添加到新解決方案中。

所以是的,我把所有的東西都添加到同一個解決方案中:gui-projects,libraries,甚至單元測試。也許如果你的解決方案成爲令人難以置信的大(20 +項目,或更大),它會更好地將它們分開,但我從來沒有在這樣的大型項目上工作。

0

我,就我而言,已經將解決​​方案和項目分開了,給我留下了一大堆項目和一些解決方案文件。我在新的解決方案中添加了我需要的所有項目。

好處是我的工作空間中只有我真正需要的項目,而且在所有其他解決方案中它仍會發生變化。 其缺點是它在所有其他解決方案中也會發生變化,這意味着如果您更改廣泛使用的庫的API,則如果不兼容,則必須檢查所有其他解決方案。

+0

通常在下一個構建中出現不兼容問題您可以使用'Obsolete'因此編譯器會對它們發出警告 – Scoregraphic 2009-10-02 12:50:28

+0

您是否建議將項目文件實際移動到Intranet解決方案所在的同一文件夾? – vikasde 2009-10-02 12:55:06

+0

vikasde,我將所有項目移動到一個文件夾中,然後分離他們使用每個工具/程序的解決方案 – Bobby 2009-10-02 13:56:16

0

我更喜歡有2個解決方案。它們都具有相同的結構(或多或少),但第二個包含僅與特定項目無關的可重用基礎架構代碼。問題是 - 你的項目代碼不應該在嚴格的銀行業務邏輯旁邊包含類似框架(即'IsNumeric()'字符串擴展方法)的東西(即使你不會重用你的'庫')。這隻會讓事情更具可讀性和可維護性。

例如:

解決方法1:

  • ProjectName.Core
  • ProjectName.Infrastructure
  • ProjectName.Application
  • ProjectName.UI
  • ProjectName.IntegrationTests
  • ProjectName.UnitTests

而且

溶液2:

  • CompanyName.Core
  • CompanyName.Infrastructure
  • CompanyName.Application
  • CompanyName.UI
  • CompanyName.Tests

而且我儘量不要有超過10個項目在1個解決方案。否則 - 導致在「卸載項目」/「重新加載項目之間進行無限的切換

相關問題