Visual Studio项目模板与向导开发

本文介绍了如何开发Visual Studio的项目模板与向导,以方便创建Prism跨平台Plugin项目。作者详细讲解了从安装所需工具、新建VSIX项目、设置模板和向导、实现Wizard、添加模板文件到调试和发布的过程,旨在帮助开发者提高效率。
摘要由CSDN通过智能技术生成

在【Xamarin+Prism开发详解系列】里面经常使用到【Prism unity app】的模板创建Prism.Forms项目:

备注:由于Unity社区已经不怎么活跃,下一个版本将会有Autofac,DryIOC,Ninject的项目模板。

image

自动弹出选择框:

image

对于我这类还没有动手写过模板的人来说,确实挺新奇的。于是就决定自己也写个类似的试试,目的就是通过向导创建跨平台Plugin项目,类似Plugin for xamarin,不过是针对Prism,对应平台可以自由选择创建。试了之后才发现也有不少注意的地方,特写下此文做备忘。

项目地址:https://github.com/NewBLife/Prism.Forms.Plugin

插件下载地址:TemplatesForPrism.vsix

1、安装插件开发用的Extensibility模板与工具

image

2、新建VSIX Project插件项目

source.extension.vsixmanifest 这个文件相当重要,里面可以指定安装目标,模板,向导等。

最后我实现的例子:

安装目标:VS2013以上(2017估计不行)

image

资产:Project模板,Item模板,Wizard向导

image

3、从【C# Item Template】与【C# Project Template】模板创建项目。

4、从【类库】模板创建Wizard项目。(Wizard向导只能是类库)

以上步骤之后的项目结构:

image

介绍:

  • 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.WizardMicrosoft.VisaulStudio.TemplateWizardinterface,envdte
  • TemplatesForPrism:Prism.Forms.Plugin.Nuspec,Prism.Forms.Plugin,Prism.Forms.Plugin.Wizard

6、添加生成向导

6.1、NewProjectWizard项目选择向导创建新建一个WinForm选择框,返回选择的结果。

image

继承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 =
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值