纠正DI的项目/构建设置

时间:2013-04-03 14:36:07

标签: c# deployment dependency-injection

希望是一个直截了当的人。我正在研究一款C#产品,由于Xamarin,它可能拥有桌面(WPF),网络,任意数量的移动构建输出。

有几个组成部分:

  • 我有一个“CoreApi”项目,它有接口和共享模型,可以调用它来编写任何应用程序前端(并实现写入后端)。
  • 我还在另一个程序集中拥有所有“应用程序逻辑” - 目前与MVVM模式中的View Models类似,但具有应用程序焦点。
  • applogic中包含一个特定于平台的接口实现,它涉及动态生成用于回放的音频缓冲区。单独的项目/组装

我正在使用Ninject,效果很好。但随着解决方案逐渐扩展到包括其他项目类型(网络,移动客户端),我可以预见到一些“气味”:

目前,客户端项目引用了特定于平台的(DirectX)音频引擎以及后端的本地/测试实现。它仍然使用Ninject,并没有直接引用实现类,但让它们可访问并直接引用,就像感觉不对。

在构建解决方案时,我几乎想要拥有不同的“包”:

  • 包1:桌面客户端+ DirectX引擎+后端X
  • 包2:带有后端Y的Web部署包
  • 套餐3:带有后端X + Android音频引擎的Android版......

我是否在正确的轨道上?我是否真的想采用后期制作步骤,将内容复制到目标文件夹?

1 个答案:

答案 0 :(得分:1)

我会考虑使用MSBuild功能来执行必要的副本。我采用了使用dependency.proj文件的方法,您可以将其配置为根据您选择设置的任何配置选项执行相应的复制操作,例如:您可以根据配置和CPU类型将特定文件复制到输出文件夹中。我不主张使用旧式的后期构建步骤,因为这些步骤不可靠且难以调试。在我看来,MSBuild是前进的方向。