当前位置: 首页 > news >正文

一个 WPF + MudBlazor 的项目模板(附:多项目模板制作方法)

最近做了几个 WPF + MudBlazor 的小东西,每次从头搭建环境比较繁琐,然鹅搭建过程还没啥技术含量,索性就直接做了个模板,方便以后使用。

1. 介绍

  • 一个用来创建 .NET 8 + WPF + MudBlazor 的项目模板

  • 适用于 VS2022

用法:vs插件市场下载 or 自己通过 Github 源码编译

vsix

image

2. 模板打包方法

步骤都是基于 Github 仓库中的代码来做示例

2.1 创建要打包的项目 WpfMudBlazor

这一步没什么好说的,想做什么样子的模板,就码怎样的代码即可。

2.2 替换模板关键字 TemplateCode

该项目是 WpfMudBlazor 的副本。在项目中替换了关键字后,会导致无法编译,所以选择复制一份出来,方便以后升级。

在这个项目中,仅仅是将项目名称和解决方案替换成创建项目时用户输入的名称。(使用 $safeprojectname$ 关键字替换掉原有内容即可)

<Project Sdk="Microsoft.NET.Sdk.Razor"><PropertyGroup><OutputType>WinExe</OutputType><TargetFramework>net8.0-windows</TargetFramework><Nullable>enable</Nullable><ImplicitUsings>enable</ImplicitUsings><UseWPF>true</UseWPF><RootNamespace>$safeprojectname$</RootNamespace></PropertyGroup><ItemGroup><PackageReference Include="Microsoft.AspNetCore.Components.WebView.Wpf" Version="8.0.6" /></ItemGroup><ItemGroup><ProjectReference Include="..\$safeprojectname$.Pages\$safeprojectname$.Pages.csproj" /></ItemGroup></Project>

namespace $safeprojectname$
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();InitializeBlazor();}}
}

VS提供了很多模板关键字,如果需要制作更复杂的模板,可以参考微软官方文档-模板参数

2.3 导出模板文件 TemplateOutput

  1. 用vs打开模板项目

  1. 项目 -> 导出模板

  1. 选择项目模板 -> 选择对应项目

友情提醒:多项目模板时记得要分别导出每一个项目

image

image

  1. 将所有项目的模板放入同一级目录中并解压(导出项目模板为.zip文件)

  1. 在根目录中再新建一个*.vstemplate文件(该文件为所有项目的模板文件)

image

image

image

  1. 编辑新建的.vstemplate模板文件

  • 根据自己的需求配置模板的项目说明

  • 注意ProjectCollection节点中子项目的引用路径

<VSTemplate Version="3.0.0" Type="ProjectGroup"xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"><TemplateData><Name>WPF MudBlazor (.NET 8)</Name><Description>一个用来创建 .NET 8 + WPF + MudBlazor 的项目模板</Description><ProjectType>CSharp</ProjectType><PlatformTag>C#</PlatformTag><PlatformTag>WPF</PlatformTag><PlatformTag>MudBlazor</PlatformTag><PlatformTag>桌面</PlatformTag><PlatformTag>混合开发</PlatformTag><DefaultName>WpfMudBlazor</DefaultName><Icon>icon.ico</Icon></TemplateData><TemplateContent><ProjectCollection><ProjectTemplateLink ProjectName="$safeprojectname$" CopyParameters="true">WpfMudBlazor\MyTemplate.vstemplate</ProjectTemplateLink><ProjectTemplateLink ProjectName="$safeprojectname$.Pages" CopyParameters="true">WpfMudBlazor.Pages\MyTemplate.vstemplate</ProjectTemplateLink></ProjectCollection></TemplateContent>
</VSTemplate>

  1. 编辑所有子项目的.vstemplate模板文件,在TemplateData节点加入<Hidden>true</Hidden>

这个设置是为了最终导入模板后,所有的子项目不会显示在vs的项目模板位置

  <TemplateData><!-- 为了节约空间,不显示文件中的其它原始配置 --><Hidden>true</Hidden></TemplateData>

  1. 将当前文件夹的所有内容打包成新的模板文件*.zip

image

将这个模板文件直接复制到第3步中vs默认模板路径下,重启vs,新建项目,你会发现模板已经生效。后续步骤为将模板文件打包成VSIX扩展安装文件(非必须)

2.4 打包扩展 WpfMudBlazorTemplate

该步骤需要在 VS 中额外安装“Visual Studio 扩展开发”组件

  1. 创建一个新的“空白 VSIX 项目”

image

  1. 将上一节中的模板文件复制到当前项目中,并且选择始终复制

  1. 双击项目中的source.extension.vsixmanifest文件来编辑扩展信息

  • 元数据 Metadata -> 根据自己需求填写

image

  • 资产文件 Assets -> 新建

image

  • 其它几个选项为扩展的最低运行环境等等,看一眼差不多也能看懂个七七八八,按需配置即可

  1. 编译并生成项目,搞定(.VSIX文件在生成目录)

单项目模板的生成就更简单了,上述步骤只减不增

文章转载自:[九零]

原文链接:https://www.cnblogs.com/JiuLing-zhang/p/17999260

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

相关文章:

一个 WPF + MudBlazor 的项目模板(附:多项目模板制作方法)

最近做了几个 WPF MudBlazor 的小东西&#xff0c;每次从头搭建环境比较繁琐&#xff0c;然鹅搭建过程还没啥技术含量&#xff0c;索性就直接做了个模板&#xff0c;方便以后使用。 1. 介绍 一个用来创建 .NET 8 WPF MudBlazor 的项目模板 适用于 VS2022 用法&#xff1a;…...

【数据结构与算法】之排序系列-20240203

这里写目录标题 一、628. 三个数的最大乘积二、645. 错误的集合三、747. 至少是其他数字两倍的最大数四、905. 按奇偶排序数组五、922. 按奇偶排序数组 II六、976. 三角形的最大周长 一、628. 三个数的最大乘积 简单 给你一个整型数组 nums &#xff0c;在数组中找出由三个数组…...

C++之std::tuple(一) : 使用

相关系列文章 C之std::tuple(一) : 使用 C三剑客之std::variant(一) : 使用 C三剑客之std::variant(二)&#xff1a;深入剖析 目录 1.简介 2.创建元组 2.1.直接初始化方式 2.2.使用花括号初始化列表方式&#xff08;C11及以上版本&#xff09; 2.3.make_tuple方式 2.4.使…...

蓝桥杯嵌入式第六届真题(完成)STM32G431

蓝桥杯嵌入式第六届真题&#xff08;完成&#xff09;STM32G431 题目部分 相关文件 main.c /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program b…...

【日志记录】——主MCU 通过私有协议更新从MCU程序固件

一&#xff1a;需求分析 在一些系统较为复杂的嵌入式设备中&#xff0c;往往不止一片MCU或者处理模块&#xff0c;通常为一片主MCU负责应用逻辑处理和对外网络通信&#xff0c;其他从MCU负责实时采集处理高频数据&#xff0c;在设备运营过程中&#xff0c;往往伴随新需求或者bu…...

【0253】深入分析Query Execution(一)

下一篇:【0254】深入分析Query Execution(二) 1. 查询执行阶段(Query Execution Stages) 1.1 简单查询协议(Simple Query Protocol) 客户端-服务器协议的一个简单版本支持SQL查询执行:它将查询的文本发送到服务器,并在响应中获得完整的执行结果,而不管它包含多少行…...

编译opencv4.6问题汇总,第三方软件包见我发的资源

win10系统 python3.8.2&#xff0c;cmake-3.15.5-win64-x64&#xff0c;opencv4.6 编译方式见&#xff1a;OpenCV的编译 - 知乎 本文主要总结问题。赠人玫瑰手留余香。 问题1 Problem with installing OpenCV using Visual Studio and CMake (error code: MSB3073) 解决方法…...

Matplotlib炫酷气泡图:代码实战与参数解析【第55篇—python:Matplotlib炫酷气泡图】

文章目录 Matplotlib炫酷气泡图&#xff1a;代码实战与参数解析1. 基础气泡图2. 网格气泡图3. 自定义颜色气泡图4. 钟型气泡图5. 交互式气泡图6. 打卡气泡图7. 动态气泡图总结 Matplotlib炫酷气泡图&#xff1a;代码实战与参数解析 气泡图是一种展示数据分布、关联和趋势的强大…...

Android学习之路(29) Gradle初探

前言: 大家回想一下自己第一次接触Gradle是什么时候&#xff1f; 相信大家也都是和我一样&#xff0c;在我们打开第一个AS项目的时候&#xff0c; 发现有很多带gradle字样的文件&#xff1a;setting.gradle, build.gradle,gradle.warpper,以及在gradle文件中各种配置&#xff…...

python-自动化篇-运维-语音识别

文章目录 理论文本转换为语音使用 pyttsx使用 SAPI使用 SpeechLib 语音转换为文本 代码和效果01使用pyttsx实现文本_语音02使用SAPI实现文本_语音03使用SpeechLib实现文本_语音04使用PocketSphinx实现语音转换文本 理论 语音识别技术&#xff0c;也被称为自动语音识别&#xf…...

ElasticSearch-ElasticSearch实战-仿京东商城搜索(高亮)

注&#xff1a;此为笔者学习狂神说ElasticSearch的实战笔记&#xff0c;其中包含个人的笔记和理解&#xff0c;仅做学习笔记之用&#xff0c;更多详细资讯请出门左拐B站&#xff1a;狂神说!!! 七、ElasticSearch实战 仿京东商城搜索&#xff08;高亮&#xff09; 1、工程创建…...

解释 Python 中的描述符(Descriptor)是什么?如何在 Python 中实现一个简单的 ORM(对象关系映射)?

解释 Python 中的描述符&#xff08;Descriptor&#xff09;是什么&#xff1f;举例说明其用法。 在 Python 中&#xff0c;描述符&#xff08;Descriptor&#xff09;是一种对象属性的扩展机制&#xff0c;它允许你在访问或修改属性时执行自定义的操作。描述符是实现了特定协…...

IP数据云识别真实IP与虚假流量案例

随着互联网的普及&#xff0c;企业在数字领域面临着越来越复杂的网络威胁。为了保护网站免受虚假流量和恶意攻击的影响&#xff0c;许多企业正在采用IP数据云。本文将结合一个真实案例&#xff0c;深入探讨IP数据云如何成功准确地识别真实用户IP和虚假流量IP&#xff0c;提高网…...

signalR+websocket:实现消息实时通讯——技能提升

signalR 解决步骤1&#xff1a;npm install microsoft/signalr6.0.6 安装指定版本的microsoft/signalr&#xff0c;我这边安装的版本是6.0.6 解决步骤2&#xff1a;引入import * as signalR from microsoft/signalr; import * as signalR from microsoft/signalr; 下面第三…...

机器学习入门-----sklearn

机器学习基础了解 概念 机器学习是人工智能的一个实现途径 深度学习是机器学习的一个方法发展而来 定义:从数据中自动分析获得模型,并利用模型对特征数据【数据集:特征值+目标值构成】进行预测 算法 数据集的目标值是类别的话叫做分类问题;目标值是连续的数值的话叫做回…...

双非本科准备秋招(15.3)—— 力扣二叉树

今天学了二叉树结点表示法&#xff0c;建树代码如下。 public class TreeNode {public int val;public TreeNode left;public TreeNode right;public TreeNode(int val) {this.val val;}public TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left …...

20240203在WIN10下使用GTX1080配置stable-diffusion-webui.git不支持float16精度出错的处理

20240203在WIN10下使用GTX1080配置stable-diffusion-webui.git不支持float16精度出错的处理 2024/2/3 21:23 缘起&#xff1a;最近学习stable-diffusion-webui.git&#xff0c;在Ubuntu20.04.6下配置SD成功。 不搞精简版本&#xff1a;Miniconda了。直接上Anacoda&#xff01; …...

京东微前端框架MicroApp简介

一、MicroApp 1.1 MicroApp简介 MicroApp是由京东前端团队推出的一款微前端框架,它从组件化的思维,基于类WebComponent进行微前端的渲染,旨在降低上手难度、提升工作效率。MicroApp无关技术栈,也不和业务绑定,可以用于任何前端框架。 官网链接:https://micro-zoe.gith…...

SpringBoot 使用定时任务(SpringTask)

Spring3.0以后自带的task&#xff0c;可以将它看成一个轻量级的Quartz&#xff0c;而且使用起来比Quartz简单许多。 使用步骤&#xff1a; 1.导入坐标 在spring-boot-starter-web坐标中&#xff0c;就包含了SpringTask&#xff0c;所以一般的Web项目都包含了。 <depende…...

国标GB/T 28181详解:设备视音频文件检索消息流程

目 录 一、设备视音频文件检索 二、设备视音频文件检索的基本要求 三、命令流程 1、流程图 2、流程描述 四、协议接口 五、产品说明 六、设备视音频文件检索的作用 七、参考 在国标GBT28181中&#xff0c;定义了设备视音频文件检索消息的流程&#xff0c;主…...

商用车辆电池健康数据深度解析:从真实充电记录到寿命预测

商用车辆电池健康数据深度解析&#xff1a;从真实充电记录到寿命预测 【免费下载链接】battery-charging-data-of-on-road-electric-vehicles This repository is transfered from the personal account of Dr. Zhognwei Deng (Michael Teng) 项目地址: https://gitcode.com/…...

C++性能调优第一步:手把手教你用QueryPerformanceCounter和chrono精准测量微秒级函数耗时

C性能调优实战&#xff1a;微秒级耗时测量的艺术与科学 在追求极致性能的世界里&#xff0c;每一微秒都至关重要。高频交易系统中&#xff0c;1微秒的延迟可能意味着数百万美元的损失&#xff1b;游戏引擎里&#xff0c;帧间时间的细微波动会导致画面卡顿&#xff1b;实时音视频…...

ESP32开发板选型指南:从Arduino到NodeMCU,哪款更适合你的项目?

ESP32开发板选型指南&#xff1a;从Arduino到NodeMCU&#xff0c;哪款更适合你的项目&#xff1f; 在物联网和嵌入式开发领域&#xff0c;ESP32系列开发板凭借其出色的性价比和丰富的功能&#xff0c;已经成为众多开发者的首选。面对市场上琳琅满目的ESP32开发板型号&#xff0…...

OpCore Simplify:15分钟搞定黑苹果EFI配置的终极指南

OpCore Simplify&#xff1a;15分钟搞定黑苹果EFI配置的终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果EFI配置而头疼吗&…...

企业内部培训,适合用教学云桌面吗?

企业内部培训常面临环境部署繁琐、运维压力大、设备资源固化、数据安全难控等问题&#xff0c;教学云桌面凭借集中化管理与弹性资源配置&#xff0c;成为不少企业的选型方向。结合实际应用与技术特性来看&#xff0c;教学云桌面适配企业培训场景&#xff0c;且能系统性解决传统…...

01-16-15 模板方法模式 - Activity生命周期的模板方法

01-16-15 模板方法模式 - Activity生命周期的模板方法 模式定义 模板方法模式&#xff08;Template Method Pattern&#xff09;属于行为型设计模式&#xff0c;其核心思想是&#xff1a;在父类中定义一个算法的骨架&#xff0c;将某些步骤的具体实现延迟到子类。子类在不改变…...

终极指南:如何提升实时多人姿态估计算法的可解释性与可信度

终极指南&#xff1a;如何提升实时多人姿态估计算法的可解释性与可信度 【免费下载链接】Realtime_Multi-Person_Pose_Estimation Code repo for realtime multi-person pose estimation in CVPR17 (Oral) 项目地址: https://gitcode.com/gh_mirrors/re/Realtime_Multi-Perso…...

PixEz-flutter网络优化实战:3个技巧打造流畅的二次元内容体验

PixEz-flutter网络优化实战&#xff1a;3个技巧打造流畅的二次元内容体验 【免费下载链接】pixez-flutter 一个支持免代理直连及查看动图的第三方Pixiv flutter客户端 项目地址: https://gitcode.com/gh_mirrors/pi/pixez-flutter 作为一款支持免代理直连的第三方Pixiv客…...

一次性拖鞋自动下料系统设计超声波热熔裁剪机设计【论文+CAD图纸+solidworks三维+开题报告+任务书+实习调研报告+其它相关资料】

一次性拖鞋自动下料系统与超声波热熔裁剪机的设计&#xff0c;聚焦于提升拖鞋制造环节的效率与精度。传统拖鞋生产中&#xff0c;人工下料易受操作误差影响&#xff0c;导致材料浪费与产品尺寸偏差&#xff1b;而普通裁剪方式可能因热熔不充分&#xff0c;出现边缘毛刺或连接不…...

避免自激!AD8367用作AGC放大器时的PCB布局避坑指南与环路稳定性分析

避免自激&#xff01;AD8367用作AGC放大器时的PCB布局避坑指南与环路稳定性分析 在射频与中频电路设计中&#xff0c;AD8367作为一款高性能可变增益放大器(VGA)&#xff0c;因其宽增益范围(45dB)和集成平方律检波器特性&#xff0c;常被用于自动增益控制(AGC)系统。然而&#x…...