一、前言

在实际开发中,很多开发者第一次接触 Prism 时,往往会耗费大量时间在项目初始化工作上:安装 NuGet 包、配置依赖注入容器、创建 Shell 主外壳、搭建 View 与 ViewModel 结构、调整应用启动逻辑……

这些重复且机械的初始化工作,不仅极易出现配置遗漏、参数错误等问题,还会占用大量业务开发时间,降低整体开发效率。

事实上,Prism 官方早已提供了标准化解决方案——Prism Template Pack

该工具集成了全套官方脚手架,可一键生成符合 Prism 开发规范的项目骨架,内置丰富的项目模板、项模板与快捷代码片段,彻底解放开发者的基建搭建工作,让开发者专注于核心业务逻辑实现。

本文将基于 Visual Studio 2026、.NET 8(LTS)与 Prism 最新稳定版 开展实战教学,全方位讲解 Prism Template Pack 的安装、使用与适配场景,帮助开发者5分钟快速搭建标准化、企业级的 Prism 项目骨架。

二、Prism Template Pack 核心介绍

2.1 官方定义

Prism Template Pack 是由微软 MVP Brian Lagunas 开发维护的 Visual Studio 官方扩展插件,是 Prism 生态的核心脚手架工具,专为 WPF、Xamarin.Forms、Uno Platform 等 XAML 平台应用开发提供标准化支撑。

插件整合了项目模板、代码项模板、快捷代码片段三大核心能力,全覆盖 Prism 项目初始化、页面创建、代码编写等场景,大幅简化开发流程。核心能力如下:

类型 包含内容 核心作用
项目模板 Prism Blank App、Prism Module、Prism Full App 一键生成完整标准化项目骨架,无需手动配置基建
项模板 Prism View、Prism ViewModel、Prism Window、Prism UserControl 快速创建符合规范的页面、窗口、控件及对应视图模型
代码片段 propp、cmd、cmdfull、cmdg、cmdgfull 简化MVVM属性、命令编写,减少冗余代码

根据 Prism 官方说明,该模板包的核心价值是标准化各类常规开发任务,规避手动配置误差,统一项目开发规范。

2.2 安装使用的核心价值

手动搭建 Prism 项目流程繁琐、耗时久且容错率低,完整手动初始化流程如下:

创建空白WPF项目
↓
手动安装Prism核心NuGet包
↓
配置依赖注入容器
↓
修改App.xaml、App.xaml.cs
↓
继承PrismApplication基类
↓
创建Shell主窗口
↓
新建View与对应ViewModel
↓
配置ViewModelLocator自动绑定
↓
校验启动逻辑,正式进入业务开发

手动搭建全程耗时 10~20分钟,且极易出现容器配置错误、视图绑定失效、启动逻辑异常等问题。

而使用 Prism Template Pack 搭建项目,流程极简:

VS中选择对应Prism模板
↓
填写项目名称、选择框架与容器
↓
一键创建项目
↓
直接开展业务开发

全程仅需 1分钟左右,且所有配置均遵循官方最优规范。

其核心价值不仅是提升开发效率,更重要的是标准化项目结构与配置逻辑,统一团队开发规范,降低多人协作的沟通与维护成本。

三、Prism Template Pack 安装教程

3.1 Visual Studio 可视化安装(推荐)

适配 Visual Studio 2022/2026 全版本,步骤简单、稳定性高,具体操作如下:

  1. 打开 Visual Studio 2026;

  2. 点击顶部菜单栏 扩展 → 管理扩展
    image

  3. 在搜索框输入 Prism Template Pack,检索官方插件;
    image

图示为已安装状态,未安装用户可直接点击下载

  1. 点击下载,等待插件安装包下载完成;

  2. 关闭所有 Visual Studio 窗口,VSIX Installer 自动唤起安装程序;

  3. 点击 Modify/安装,完成插件部署;

  4. 重启 Visual Studio,插件自动生效。

安装成功后,新建项目界面即可检索到所有 Prism 官方模板。
image

3.2 技术版本适配建议

结合企业项目稳定性与兼容性要求,本文推荐成熟稳定的技术组合:

组件 推荐版本
Visual Studio VS2026
.NET 框架 .NET 8(LTS 长期支持版)
Prism 框架 Marketplace 最新稳定版
依赖注入容器 DryIoc(Prism官方首选)
Template Pack Visual Studio Marketplace 最新版

企业项目优先选用 LTS 版本,可获得更长的官方技术支持、更低的BUG概率与更完善的生态适配,避免频繁版本迭代带来的兼容问题。

3.3 VSIX模板与CLI模板区别

多数开发者易混淆两类Prism脚手架模板,二者适配场景不同,可根据开发习惯选择:

模板类型 使用方式 适用场景
Prism Template Pack(VSIX) Visual Studio 图形化界面操作 日常WPF可视化开发、新手入门、常规项目搭建
Prism.Templates(CLI) dotnet new 命令行指令操作 自动化构建、批量项目初始化、CI/CD集成场景

常规 WPF 项目开发,优先推荐 VSIX 可视化模板,操作更直观、上手成本更低。

3.4 常见安装与适配问题排查
常见问题 解决方案
新建项目找不到Prism模板 清理VS模板缓存,重启Visual Studio
Template Pack安装失败 卸载旧版本插件,重新下载最新版重装
Marketplace在线安装失败 手动下载VSIX安装包,本地离线安装

VS模板缓存目录:

%LOCALAPPDATA%\Microsoft\VisualStudio\<版本号>\ProjectTemplatesCache

四、Prism 核心项目模板实战

4.1 Prism Blank App(WPF)——基础轻量化模板
4.1.1 适用场景
  • Prism 新手入门学习

  • 小型桌面工具类项目开发

  • 中型项目基础脚手架搭建

4.1.2 创建步骤
  1. 新建项目,搜索关键词 Prism,选择 Prism Blank App (WPF)

  2. 自定义项目名称(示例:PrismBlankDemo);

  3. 依赖容器选择 DryIoc(官方首选,性能最优);

  4. 目标框架选择**.NET 8**;

  5. 确认配置,一键创建项目。

4.1.3 自动生成标准化项目结构
Prism_Blank_App_WPF
├─App.xaml
├─App.xaml.cs
├─Views
│  └─MainWindow.xaml
├─ViewModels
│  └─MainWindowViewModel.cs
└─PrismBlankDemo.csproj

image

4.1.4 模板自动完成的核心配置
  • ✅ 自动安装全套 Prism 核心 NuGet 包

  • ✅ 集成并初始化 DryIoc 依赖注入容器

  • ✅ App 类自动继承 PrismApplication 基类

  • ✅ 移除WPF原生 StartupUri 启动逻辑

  • ✅ 自动创建主窗口及对应 ViewModel

  • ✅ 开启 ViewModelLocator 自动绑定功能

  • ✅ 配置默认启动Shell窗口

4.1.5 核心默认代码示例

App.xaml

<prism:PrismApplication x:Class="Prism_Blank_App_WPF.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:Prism_Blank_App_WPF"
             xmlns:prism="http://prismlibrary.com/" >
    <Application.Resources>
         
    </Application.Resources>
</prism:PrismApplication>

App.xaml.cs

using Prism.Ioc;
using Prism_Blank_App_WPF.Views;
using System.Windows;

namespace Prism_Blank_App_WPF
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App
    {
        protected override Window CreateShell()
        {
            return Container.Resolve<MainWindow>();
        }

        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {

        }
    }
}

MainWindowViewModel.cs

using Prism.Mvvm;

namespace Prism_Blank_App_WPF.ViewModels
{
    public class MainWindowViewModel : BindableBase
    {
        private string _title = "Prism Application";
        public string Title
        {
            get { return _title; }
            set { SetProperty(ref _title, value); }
        }

        public MainWindowViewModel()
        {

        }
    }
}

代码说明BindableBase 是 Prism 核心基类,封装了 INotifyPropertyChanged 接口,内置 SetProperty 方法,极简实现属性变更通知,彻底规避手动编写冗余的绑定代码。

4.2 Prism Blank App(Uno Platform)——全平台跨端模板
4.2.1 适用场景
  • 一站式全平台应用开发(iOS、Android、Windows、macOS、Web、WebAssembly、UWP)

  • 一套代码多端部署的跨平台项目
    image

4.2.2 创建步骤
  1. 新建项目,搜索并选择 Prism Blank App (Uno Platform)

  2. 在Uno Platform可视化向导中,勾选需要部署的目标平台;

  3. 选择DryIoc/Unity依赖注入容器;

  4. 确认配置,完成项目创建。

4.2.3 模板核心特点
  • 基于Uno Platform实现跨平台编译能力,真正实现一次开发、多端运行

  • 原生集成Prism全套MVVM、依赖注入、模块化架构体系

  • 可视化配置平台,无需手动修改复杂配置文件

4.3 Prism Blank App(Xamarin.Forms)——移动端跨端模板
4.3.1 适用场景
  • iOS、Android移动端应用开发

  • 代码共享式跨平台移动项目迭代维护
    image

4.3.2 创建步骤
  1. 新建项目,搜索选择 Prism Blank App (Xamarin.Forms)

  2. 通过内置向导,勾选iOS、Android、UWP等目标平台;

  3. 确认配置完成创建。

4.4 Prism Module(WPF)——模块化业务模板
4.4.1 适用场景
  • 企业级大型WPF模块化架构项目

  • 插件化、动态模块加载场景

  • 多团队并行开发、独立部署的项目

4.4.2 自动生成模块结构
Prism_Blank_App_WPF
├─App.xaml                     # WPF 应用程序的定义文件,包含应用级资源、启动URI等配置
├─App.xaml.cs                  # 应用程序的后台代码,Prism 框架的入口点,负责初始化容器和外壳窗口
├─Views                        # 存放所有界面视图(UI)的文件夹,遵循 MVVM 分离原则
│  └─MainWindow.xaml          # 主窗口(Shell/外壳)的XAML文件,通常包含Prism区域定义,作为模块加载的容器
├─ViewModels                   # 存放所有视图对应的ViewModel的文件夹,处理界面逻辑
│  └─MainWindowViewModel.cs   # 主窗口对应的ViewModel,实现Prism的绑定、命令等逻辑,是视图与数据的桥梁
└─PrismBlankDemo.csproj        # 项目配置文件,包含项目依赖、编译选项、Prism NuGet包引用等
4.4.3 模块生命周期与职责划分

模块完整生命周期:应用启动 → RegisterTypes() 服务注册 → OnInitialized() 模块初始化

核心方法 核心职责
RegisterTypes 注册模块内接口、业务服务、视图、依赖关系
OnInitialized 注册区域路由、挂载页面、初始化模块功能
构造函数 禁止编写复杂业务逻辑,仅做基础初始化
4.4.4 模块核心代码示例
using Prism.Ioc;
using Prism.Modularity;

namespace Prism_Module_WPF
{
    public class Prism_Module_WPFModule : IModule
    {
        public void OnInitialized(IContainerProvider containerProvider)
        {

        }

        public void RegisterTypes(IContainerRegistry containerRegistry)
        {

        }
    }
}
4.5 Prism Module(Xamarin.Forms)——移动端模块化模板
4.5.1 适用场景
  • Xamarin.Forms项目功能模块化拆分、解耦

  • 移动端大型项目功能拆分、多团队并行维护
    image

4.6 Prism Full App(WPF)——企业级完整模板
4.6.1 适用场景
  • 大型企业级桌面应用开发

  • 需要标准化完整项目架构的参考项目

  • 需集成模块、公共服务、单元测试的综合项目

4.6.2 企业级标准化目录结构
Prism_Full_App_WPF
├─Modules                                       # 模块化目录,存放所有业务模块
│  └─Prism_Full_App_WPF.Modules.ModuleName      # 示例业务模块(可扩展多个)
│     ├─依赖项                                  # 模块的 NuGet/程序集依赖
│     ├─ViewModels                              # 模块内视图模型目录
│     │  └─ViewAViewModel.cs                    # ViewA 界面对应的 ViewModel,处理模块内业务逻辑
│     ├─Views                                   # 模块内界面视图目录
│     │  └─ViewA.xaml                          # ViewA 界面 XAML 文件,可被 Prism 区域加载
│     └─ModuleNameModule.cs                    # Prism 模块定义文件,实现 IModule 接口,注册服务/视图
├─Services                                      # 服务层目录,存放业务服务实现
│  ├─Prism_Full_App_WPF.Services               # 服务实现项目
│  │  ├─依赖项                                  # 服务项目的依赖
│  │  └─MessageService.cs                      # 消息服务实现类,提供具体业务逻辑
│  └─Prism_Full_App_WPF.Services.Interfaces    # 服务接口项目(解耦用)
│     ├─依赖项                                  # 接口项目的依赖
│     └─IMessageService.cs                      # 消息服务接口,定义服务契约
├─Tests                                         # 单元测试目录
│  └─Prism_Full_App_WPF.Modules.ModuleName.Tests # 示例模块的单元测试项目
├─Prism_Full_App_WPF                            # 主应用程序项目(启动入口)
│  ├─依赖项                                      # 主项目的依赖
│  ├─ViewModels                                 # 主应用视图模型目录
│  │  └─MainWindowViewModel.cs                 # 主窗口 ViewModel,处理主界面逻辑与模块交互
│  ├─Views                                      # 主应用界面视图目录
│  │  └─MainWindow.xaml                        # 主窗口 XAML,包含 Prism 区域定义,作为模块容器
│  └─App.xaml                                   # 应用程序定义文件,Prism 启动配置
└─Prism_Full_App_WPF.Core                       # 核心公共库项目(跨模块共享)
   ├─依赖项                                      # 核心库依赖
   ├─Mvvm                                       # MVVM 基类目录
   │  ├─RegionViewModelBase.cs                 # 区域视图模型基类,实现 Prism 区域导航相关
   │  └─ViewModelBase.cs                       # 基础 ViewModel 基类,实现 INotifyPropertyChanged
   └─RegionNames.cs                             # Prism 区域名称常量类,统一管理区域名,避免硬编码

该结构完全遵循企业级DDD架构思想,按业务领域拆分独立模块,支持各模块独立开发、独立测试、独立部署,适配大型团队协作模式。

五、完整实战:从零搭建企业级模块化Prism项目

本实战基于 WPF + Prism + DryIoc,实现基础项目搭建 + 模块化视图动态注入完整流程。

5.1 实战步骤
步骤 具体操作
1 通过Prism Blank App创建WPF基础项目
2 新建DashboardModule业务模块
3 在模块中添加DashboardView页面
4 完成模块服务与视图注册
5 在主Shell中定义Region视图区域
6 绑定模块视图与主区域,实现动态注入
5.2 核心代码实现

1. 主窗口定义视图区域(MainWindow.xaml)

<ContentControl prism:RegionManager.RegionName="{x:Static core:RegionNames.ContentRegion}" />

2. 模块视图挂载(DashboardModule)

  _regionManager.RequestNavigate(RegionNames.ContentRegion, "ViewA");
5.3 运行流程
应用启动加载Shell主窗口
↓
初始化并加载DashboardModule模块
↓
自动注册模块视图与服务
↓
将DashboardView动态注入MainContentRegion区域
↓
页面渲染展示,完成模块化加载

通过以上流程,彻底实现视图与外壳解耦、业务模块独立化,满足企业级插件化开发需求。

六、开发最佳实践规范

6.1 项目模板选型规范
项目规模 推荐模板组合
入门/小型项目 Blank App
中型业务项目 Blank App + 自定义Module
大型企业项目 Full App
插件化动态加载项目 Module + DirectoryModuleCatalog
6.2 编码与架构规范
  1. 日常编码优先使用 proppcmd 快捷代码片段,统一代码风格;

  2. 严格遵循分层规范,View视图、ViewModel视图模型分目录存放;

  3. 新项目统一采用 DryIoc 容器,性能与兼容性最优;

  4. 所有 Region 区域名称统一常量管理,避免硬编码混乱;

  5. 按需使用Region区域,杜绝过度设计、滥用动态视图;

  6. 遵循约定优于配置原则,减少手动个性化配置;

  7. 企业生产项目优先选用 .NET LTS 长期支持版本,保障稳定性。

七、总结

Prism Template Pack 的核心价值,绝非简单的减少重复代码,而是标准化Prism项目全生命周期的基建规范

它整合了官方最优的项目结构、依赖注入配置、MVVM组织模式与模块化架构,让开发者摆脱繁琐的初始化配置,以统一、规范、高效的方式启动项目。

对于个人开发者,它大幅降低了Prism的入门门槛,规避新手常见配置错误;对于企业团队,它统一了项目架构与编码规范,极大提升了多人协作效率与项目可维护性。

如果说 Prism 框架为WPF应用提供了高可用、可扩展的架构体系,那么 Prism Template Pack 就是帮助开发者标准化落地Prism架构的核心工具

后续文章将深入讲解 Prism 核心特色能力——Region区域管理与Navigation导航机制,详解视图动态注入、跨模块导航、组件协作的底层设计与实战用法。

八、参考资料

  • Prism 官方网站:https://prismlibrary.com/

  • Visual Studio Marketplace Prism Template Pack 官方介绍

  • Prism 官方GitHub示例项目

版权声明:本文为原创文章,遵循 CC BY-SA 4.0 协议。转载请注明出处。

九、代码下载

通过网盘分享的文件:00027.WPF + Prism 技术指南与实战项目(二、模板搭建).zip
链接: https://pan.baidu.com/s/1rX3C2ROs5de1jHjTl7hUCg 提取码: pxxs

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐