当前位置: 首页 > 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;主…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代&#xff0c;运营商作为信息通信网络的核心枢纽&#xff0c;承载着海量用户数据与关键业务传输&#xff0c;其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级&#xff0c;传统安全防护体系逐渐暴露出局限性&a…...