MVVM独立程序集Visual Studio:我应该选择什么作为项目类型?

时间:2015-10-12 03:08:25

标签: c# wpf mvvm visual-studio-2015 prism

我在那里看到的许多教程都有view / viewmodel / model文件夹。

如果我使用Visual Studio项目将每个项目分成不同的程序集,我会为每个项目选择哪些项目类型?

我打算使用NuGet和XAML的Prism 6。

这是我最初的感受:

  • 申请:WPF申请
  • 观看次数:WPF用户控件库
  • ViewModel:类库
  • 型号:类库

或者,视图是否应该存在于更高级别的WPF应用程序中?

2 个答案:

答案 0 :(得分:2)

您最初的隔离似乎很好。您的Application Shell和引导程序需要位于Application类型项目中。休息一切都可以在一个类库中。如果将Views保留在单独的库项目中,则优点是可以替换它(更好的UI)而无需修改其他项目。

这取决于您的项目复杂性,您是否确实需要将这些类拆分为单独的项目。大多数时候只是命名空间就足够了。如果您要进行模块化设计,每个模块可能包含自己的视图/视图模型/模型,它有助于实现良好的抽象级别。

希望有所帮助。

答案 1 :(得分:2)

我作为承包商和全职员工参与了许多不同的MVVM项目,我认为这取决于您的开发周期的性质。如果您有一个程序员团队严格遵守TDD(例如)以及使用Blend的独立设计团队,那么您提供的示例是合理的。然而,在大多数项目中,我已经看到程序员几乎负责所有事情,包括手工编写XAML,在这些情况下,按应用程序系统而不是层级分组解决方案和文件夹要容易得多。您的大部分时间可能用于编写视图和查看模型代码,当您编辑其中时,您几乎总是会对另一个进行更改,这样可以避免让您在附近有很多麻烦,特别是随着您的应用程序的增长。

这些东西没有一个尺寸适合所有人,但我倾向于做一些大致相似的事情:

  • MyApp(包含应用程序类,其他很少)。
  • MyApp.Controls(包含非特定于应用程序的自定义控件,通常在WPF应用程序中不需要)。
  • MyApp.Domain(DDD,ORM,业务逻辑等实体)很多人会争辩说这应该进一步分解为数据层。)
  • MyApp.Localization(由于命名空间而由于技术原因必须在自己的程序集中)
  • MyApp.Net(负责在完整堆栈开发期间与其他应用程序进行通信,即服务器,客户端,管理websockets等)。
  • MyApp.Settings(我通常需要添加大量用户自定义)
  • MyApp.UnitTests(不言自明,对TDD特别重要)。
  • MyApp.WinUI(视图和视图模型)。

除此之外,第三方库还有各种其他项目(MVVM对话框,主题等)以及用于数据库维护的各种控制台和/或Windows实用程序。

这一切都是专门针对Windows应用程序的,非Windows解决方案也倾向于被添加到系统的单独MVC和WCF组件中,但这是另一篇文章! :)