2013-04-03 103 views
4

希望是一個簡單的項目/構建設置。我正在尋找一款C#產品,註定可能有桌面(WPF),網頁,以及Xamarin提供的任意數量的移動構建輸出。DI的正確項目/構建設置

有幾個組成部分:

  • 我有一個「CoreApi」項目,該項目擁有的接口和共享的模式,可以被要求寫任何應用前端(並實施寫後端)。
  • 我還在另一個程序集中擁有所有「應用程序邏輯」 - 目前與MVVM模式中的View Models類似,但具有應用程序焦點。
  • applogic中包含一個接口的平臺特定實現,它涉及動態生成用於播放的音頻緩衝區。獨立的項目/組裝

我正在使用Ninject,它運行良好。但隨着解決方案的發展,包括其他項目類型(網頁,移動客戶端),我可以預見一些'氣味':

當前客戶端項目引用了特定於平臺的(DirectX)音頻引擎和本地/測試實現的後端。它仍然使用Ninject,並且不直接引用實現類,但讓它們可訪問並直接引用,就像感覺不對。

我幾乎想有不同的 '套餐' 時,該解決方案基於:

  • 套餐1:桌面客戶端+的DirectX引擎+後端X
  • 包2:Web部署包與後端ÿ
  • 包3:Android版本與後端X + Android的音頻引擎...

我在正確的軌道上?我真的想訴諸後期製作步驟,xcopying東西到目標文件夾?

+0

無論如何你都要處理這個問題嗎?例如,Xamarin的包裝會做什麼? – penguat

+0

我不知道 - 我不想依賴那個,因爲我不只是創建Xamarin包 –

+0

真的,這個問題是關於更大的問題:我使用DI,但我應該如何組合不使用添加引用的不同實現模塊,整潔/乾淨的方式? –

回答

1

我會看看使用MSBuild功能執行必要的副本。我採用了使用dependency.proj文件的方法,您可以根據您選擇的任何配置選項來配置該文件以執行相應的複製操作,例如,您可以根據配置和CPU類型將特定文件複製到輸出文件夾中。我不會主張使用舊式的構建後步驟,因爲這些步驟不可靠且難以調試。在我看來,MSBuild是前進的方向。