MVVM独立组件Visual Studio:我应该选择什么作为项目类型

本文关键字:什么 项目 类型 选择 我应该 组件 独立 Visual Studio MVVM | 更新日期: 2023-09-27 18:17:16

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

如果我要使用Visual Studio Projects将每个项目分离到单独的程序集中,我将为每个部分选择哪个项目类型?

我计划使用Prism 6从NuGet和XAML。

这是我最初的感觉:

  • 应用:WPF应用
  • 视图:WPF用户控制库
  • ViewModel: Class Library
  • 模型:类库
或者,视图应该驻留在更高级别的WPF应用程序中吗?

MVVM独立组件Visual Studio:我应该选择什么作为项目类型

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

没有放之四海而皆准的方法,但我倾向于这样做:

  • MyApp(包含应用程序类和少量其他)。
  • MyApp。控件(包含非应用程序特定的自定义控件,通常在WPF应用程序中不需要)。
  • MyApp。域(用于DDD、ORM、业务逻辑等的实体)
  • 许多人认为这应该进一步划分为数据层。
  • MyApp。本地化(由于名称空间的原因,必须在自己的程序集中)
  • MyApp。. Net(在全栈开发期间负责与其他应用程序的通信,即服务器,客户端,管理websockets等)。
  • MyApp。设置(我通常需要添加大量的用户自定义)
  • MyApp。单元测试(自解释,对TDD特别重要)。
  • MyApp。WinUI(视图和视图模型).

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

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

您的初始隔离似乎很好。您的应用程序Shell和引导程序需要位于应用程序类型项目中。其余的一切都可以放在类库中。如果您将Views保存在单独的库项目中,好处是您可以替换它(更好的UI),而无需修改其他项目。

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

希望对你有帮助。