正确的DI项目/构建设置

本文关键字:构建 设置 项目 DI | 更新日期: 2023-09-27 18:07:10

希望是一个简单的问题。我正在寻找一个c#产品,由于Xamarin,注定可能有桌面(WPF), web,任何数量的移动构建输出。

有几个组件:

  • 我有一个"CoreApi"项目,它有接口和共享模型,可以调用它们来编写任何应用程序的前端(并实现编写后端)。
  • 我也有所有的'应用程序逻辑'在另一个程序集-目前在一个类似的风格从MVVM模式的视图模型,但与应用程序的焦点。
  • applogic中包含一个特定于平台的接口实现,它与动态生成用于回放的音频缓冲区有关。单独的项目/组件也

我正在使用Ninject,它工作得很好。但随着解决方案的发展,包括其他项目类型(web,移动客户端),我可以预见一些"气味":

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

当解决方案构建时,我几乎想要有不同的"包":

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

我讲对了吗?我真的想采取构建后的步骤,将内容复制到目标文件夹吗?

正确的DI项目/构建设置

我会考虑使用MSBuild功能来执行必要的复制。我采用了依赖关系的方法。proj文件,你可以根据你选择设置的任何配置选项来配置执行适当的复制操作,例如,你可以根据配置和CPU类型将特定的文件复制到输出文件夹中。我不提倡使用旧式的构建后步骤,因为这些步骤不可靠且难以调试。在我看来,MSBuild是前进的方向。