2012-06-27 37 views
3

爲了減少項目中的依賴性,我現在擁有一切取決於和實現的接口,並且它們被IoC容器粘合在一起。這意味着項目只需要直接引用這些接口庫。通過IoC降低相關性

但是,如果不指定該項目作爲具有執行(即使你並不需要在編譯時)執行庫不包含在可執行文件或安裝項目的參考。

Visual Studio是如何通過在不需要時需要顯式引用來促進不良實踐的?是否有可能只有所需的接口的依賴關係,在這種情況下,獲得實現庫的最佳方法是什麼?

回答

2

在某種程度上是Visual Studio中通過在不需要時,他們需要明確提及促進不好的做法?

不是。你的問題是部署,而不是構建。部署應用程序並構建應用程序是分開的事情 - 如果您有一個好的部署策略,那麼您將在其所屬的應用程序部署。

是否有可能只有所需的接口的依賴關係,在這種情況下什麼是最好的方法來獲得實現庫?

最簡單的方式確實是引用實現程序集。這肯定會使本地建設和運行變得如同F5,但是你真的想要那樣嗎?說實話,如果你和你的團隊只有編程接口的規範,這就是你所需要的(並且有像nDepend這樣的靜態分析工具可以幫助確保仍然如此)。

一種方法是創建一個部署腳本,該腳本將部署所有依賴項,無論本地還是其他地方。

+0

謝謝,@Oded。我同意,但是鑑於VS中的股票模板,您需要包含這些依賴關係。除了開箱即用之外,您會推薦什麼作爲部署策略? –

+0

[WiX](http://sourceforge.net/projects/wix/)是一個很好的部署工具集,用於腳本構建和部署。 –

+0

@AdamHouldsworth - 可能是轉向WiX的更好的理由,現在VS11不會有安裝項目。 –

0

我懷疑你只是提到了字符串或XML內的實現類型名稱。因此,Visual Studio不會將它們識別爲對類型的引用,並且不需要任何項目引用。

如果你確實提到了實現類型爲你的代碼的一部分,那麼你顯然需要從這些項目中引用相應的執行組件,或者得到一個編譯錯誤,否則。

這樣一個辦法讓你的引用正確設置和Visual Studio的榮幸是使用代碼配置,而不是XML配置,如果你的IoC容器支持。

+1

我其實沒有XML配置,它全部在代碼配置中。 –

+0

@Otávio,你可以在你的答案中附加一個代表性的配置代碼示例嗎? – stakx

+0

這很簡單 - 我迭代從中註冊對象的程序集列表。該列表可以動態構建。 –

1

號很簡單,就是他們需要爲了給開發者的工作代碼他們無需(擊中F5除外)做任何額外的東西做到最低或默認要添加的所有引用(這可能是一個爛攤子及以上硬盤慢上。

對於本地開發版本,你可以簡單地對相關項目的生成後步驟的DLL文件複製到主工作目錄。只要確保該項目被添加到活動配置待建,其他明智的你會去通過對生成後的整體惱人的調試會話才意識到沒有建造...笑

VS 2010. Post-build. Copy files in to multiple directories/multiple output path

Copy bin files on to Physical file location on Post Build event in VS2010

對於全面的應用程序部署,你很可能會尋找在Visual Studio安裝項目在最低限度,但更理想的像WiX或其他部署工具集。

1

Visual Studio不需要這些引用,但是您的IoC容器卻可以。 向項目添加引用時,其二進制文件會自動包含在輸出文件夾中,這對於您的IoC容器將代碼粘合在一起是必需的。還有其他方法可以將這些二進制文件導入到輸出文件夾中,而不是引用Visual Studio中的項目 - 也許是post-build step

+0

很可能是後期製作步驟,並且還可以將它們手動添加到安裝項目中。 –