在【Xamarin+Prism开发详解系列】里面经常使用到【Prism unity app】的模板创建Prism.Forms项目:
备注:由于Unity社区已经不怎么活跃,下一个版本将会有Autofac,DryIOC,Ninject的项目模板。
自动弹出选择框:
对于我这类还没有动手写过模板的人来说,确实挺新奇的。于是就决定自己也写个类似的试试,目的就是通过向导创建跨平台Plugin项目,类似Plugin for xamarin,不过是针对Prism,对应平台可以自由选择创建。试了之后才发现也有不少注意的地方,特写下此文做备忘。
项目地址:https://github.com/NewBLife/Prism.Forms.Plugin
插件下载地址:TemplatesForPrism.vsix
1、安装插件开发用的Extensibility模板与工具
2、新建VSIX Project插件项目
source.extension.vsixmanifest 这个文件相当重要,里面可以指定安装目标,模板,向导等。
最后我实现的例子:
安装目标:VS2013以上(2017估计不行)
资产:Project模板,Item模板,Wizard向导
3、从【C# Item Template】与【C# Project Template】模板创建项目。
4、从【类库】模板创建Wizard项目。(Wizard向导只能是类库)
以上步骤之后的项目结构:
介绍:
- Prism.Forms.Plugin.Nuspec:Plugin打包文件模板
- Prism.Forms.Plugin:Plugin项目模板
- Prism.Forms.Plugin.Wizard:Plugin创建向导
- TemplatesForPrism:VSIX插件项目
5、添加引用
- Prism.Forms.Plugin.Nuspec:Microsoft.VisaulStudio.CoreUtility
- Prism.Forms.Plugin:Microsoft.VisaulStudio.CoreUtility
- Prism.Forms.Plugin.Wizard:Microsoft.VisaulStudio.TemplateWizardinterface,envdte
- TemplatesForPrism:Prism.Forms.Plugin.Nuspec,Prism.Forms.Plugin,Prism.Forms.Plugin.Wizard
6、添加生成向导
6.1、NewProjectWizard项目选择向导创建新建一个WinForm选择框,返回选择的结果。
继承IWiazrd向导接口实现:
using EnvDTE; using Microsoft.VisualStudio.TemplateWizard; using System; using System.Collections.Generic; using System.IO; namespace Prism.Forms.Plugin.Wizard { public class NewProjectWizard : IWizard { private DTE _dte = null; private string _solutionDir = null; private string _templateDir = null; private string _projectName = null; PluginNewProjectDialogResult _dialogResult; public void BeforeOpeningFile(ProjectItem projectItem) { } public void ProjectFinishedGenerating(Project project) { if(_dialogResult.CreateAndroid) CreateProject(Target.Droid.ToString()); if (_dialogResult.CreateiOS) CreateProject(Target.iOS.ToString()); if
(_dialogResult.CreateUwp)
CreateProject(Target.UWP.ToString());
}
void CreateProject(string
platform) { string name = $"{_projectName}.{platform}"
; string projectPath =