首页 > 其他分享 >一个 WPF + MudBlazor 的项目模板(附:多项目模板制作方法)

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

时间:2024-02-01 09:03:19浏览次数:20  
标签:文件 项目 MudBlazor WpfMudBlazor WPF 模板

最近做了几个 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打开模板项目
  2. 项目 -> 导出模板
  3. 选择项目模板 -> 选择对应项目
    友情提醒:多项目模板时记得要分别导出每一个项目
    image
    image
  4. 将所有项目的模板放入同一级目录中并解压(导出项目模板为.zip文件)
  5. 在根目录中再新建一个*.vstemplate文件(该文件为所有项目的模板文件)
    image
    image
    image
  6. 编辑新建的.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
  2. 将上一节中的模板文件复制到当前项目中,并且选择始终复制
  3. 双击项目中的source.extension.vsixmanifest文件来编辑扩展信息
  • 元数据 Metadata -> 根据自己需求填写
    image
  • 资产文件 Assets -> 新建
    image
  • 其它几个选项为扩展的最低运行环境等等,看一眼差不多也能看懂个七七八八,按需配置即可
  1. 编译并生成项目,搞定(.VSIX文件在生成目录)

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

标签:文件,项目,MudBlazor,WpfMudBlazor,WPF,模板
From: https://www.cnblogs.com/JiuLing-zhang/p/17999260

相关文章

  • 通过Demo学WPF—数据绑定(二)
    准备今天学习的Demo是DataBinding中的Linq:创建一个空白解决方案,然后添加现有项目,选择Linq,解决方案如下所示:查看这个Demo的效果:开始学习这个Demoxaml部分查看MainWindow.xaml:<Windowx:Class="Linq.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006......
  • WPF性能优化:形状(Shape)、几何图形(Geometry)和图画(Drawing)的使用
    在用户界面技术中,绘图是一个绕不开的话题。WPF提供了多种可根据应用程序要求进行优化的2D图形和图像的处理功能,包括画刷(Brush)、形状(Shape)、几何图形(Geometry)、图画(Drawing)和变换(Transform)等。其中形状(Shape)、几何图形(Geometry)和图画(Drawing)承担了基础的绘图功能,形......
  • [word] word自动将更改后的内容保存到通用文档模板的解决办法
    word自动将更改后的内容保存到通用文档模板的解决办法打开word时出现“word自动将更改后的内容保存到通用文档模板上。是否加载该模板?”这里直接讲解word2007出现这种问题如何快速解决。方法/步骤点击office按钮-再点击Word选项(弹出的对话框右下角)点击加载项,选则COM加载项->转到由......
  • 【模板】WBLT
    todo:可持久化#include<bits/stdc++.h>usingnamespacestd;#ifdefLOCAL#definedebug(...)fprintf(stderr,##__VA_ARGS__)#else#definedebug(...)void(0)#endiftypedeflonglongLL;template<intN>structWBLT{staticconstexprdoublealph......
  • [职场] 就业推荐表个人简历模板范文
    就业推荐表个人简历篇1姓名:张大大目前所在:广州年龄:21户口所在:广东省国籍:中国婚姻状况:民族:汉族求职意向人才类型:普通求职应聘职位:财务/会计助理/会计文员工作年限:0职称:无职称求职类型:实习可到职日期:随时......
  • wpf 数据绑定 INotifyPropertyChanged封装
    BindableBase.cspublicabstractclassBindableBase:INotifyPropertyChanged{publiceventPropertyChangedEventHandlerPropertyChanged;//调用方法:publicstringName{get=>name;set{SetProperty<string>(refname,value);}}......
  • 算法模板 v1.6.1.20240131
    算法模板v1.1.1.20240115:之前的历史版本已经不可寻,创建了第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”与“编译”-“手动开O优化”;将“编译”-“CF模板”中的第20行代码cin>>T;注释;删除“读写”及其目录下的内容;删除“图论”-“欧拉图”-“混合图”;删除“图论”-......
  • 空白模板
    前言  本模版使用TinyMCE5进行编辑,以后写博客可以复用此模板,方便自己排版博客和发博客1.标题一  内容,内容importtorchdefcheck_cuda_availability():iftorch.cuda.is_available():device=torch.cuda.current_device()print("CUDAisavaila......
  • wpf 数据绑定 执行流程
    数据绑定SimpleBinding\MainWindow.xaml<Windowx:Class="SimpleBinding.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"......
  • 无涯教程-ExpressJS - 模板(Templating)
    Pug是Express的模板引擎,Pug是一个非常强大的模板引擎,具有多种函数,包括filter,includes,inheritance,interpolation等。要将Pug与Express一起使用,无涯教程需要安装它。npminstall--savepug现在已经安装了Pug,将其设置为您的应用程序的模板引擎。将以下代码添加到您的index.js文......