最近做了幾個 WPF + MudBlazor 的小東西,每次從頭搭建環境比較繁瑣,然鵝搭建過程還沒啥技術含量,索性就直接做了個模板,方便以後使用。 1. 介紹 一個用來創建 .NET 8 + WPF + MudBlazor 的項目模板 適用於 VS2022 用法:vs插件市場下載 or 自己通過 G ...
最近做了幾個
WPF
+MudBlazor
的小東西,每次從頭搭建環境比較繁瑣,然鵝搭建過程還沒啥技術含量,索性就直接做了個模板,方便以後使用。
1. 介紹
- 一個用來創建 .NET 8 + WPF + MudBlazor 的項目模板
- 適用於 VS2022
用法:vs插件市場下載 or 自己通過 Github 源碼編譯
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
- 用vs打開模板項目
- 項目 -> 導出模板
- 選擇項目模板 -> 選擇對應項目
友情提醒:多項目模板時記得要分別導出每一個項目
- 將所有項目的模板放入同一級目錄中並解壓(導出項目模板為
.zip
文件) - 在根目錄中再新建一個
*.vstemplate
文件(該文件為所有項目的模板文件)
- 編輯新建的
.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>
- 編輯所有子項目的
.vstemplate
模板文件,在TemplateData
節點加入<Hidden>true</Hidden>
。
這個設置是為了最終導入模板後,所有的子項目不會顯示在vs的項目模板位置
<TemplateData>
<!-- 為了節約空間,不顯示文件中的其它原始配置 -->
<Hidden>true</Hidden>
</TemplateData>
- 將當前文件夾的所有內容打包成新的模板文件
*.zip
將這個模板文件直接複製到第3步中vs預設模板路徑下,重啟vs,新建項目,你會發現模板已經生效。
後續步驟為將模板文件打包成VSIX
擴展安裝文件(非必須)
2.4 打包擴展 WpfMudBlazorTemplate
該步驟需要在 VS 中額外安裝“Visual Studio
擴展開發”組件
- 創建一個新的“空白 VSIX 項目”
- 將上一節中的模板文件複製到當前項目中,並且選擇始終複製
- 雙擊項目中的
source.extension.vsixmanifest
文件來編輯擴展信息
- 元數據
Metadata
-> 根據自己需求填寫
- 資產文件
Assets
-> 新建
- 其它幾個選項為擴展的最低運行環境等等,看一眼差不多也能看懂個七七八八,按需配置即可
- 編譯並生成項目,搞定(
.VSIX
文件在生成目錄)
單項目模板的生成就更簡單了,上述步驟只減不增