1. 创建模板配置

1.1 在项目目录中创建.template.config文件夹

1.2 创建一个名为“template.json” 的新文件

{
"author": "5DThinking",
"classifications": [ "WinForm" ], //对应模板的Tags
"identity": "5DThinking.Demo", //模板的唯一名称
"name": "5DThinking.Demo", //对应模板的Templates
"shortName": "abc", //【修改】短名称,使用 dotnet new <shortName> 安装模板时的名称
"tags": {
"language": "C#",
"type": "project"
}
"sourceName": "xxx", // 【修改】在使用 -n 选项时,会替换模板中项目的名字xxx
"preferNameDirectory": true // 可选,添加目录
}

注意:"sourceName": "xxx"指明模板中将要被替换的字符串

2. 安装模板

运行命令dotnet new -i .以安装位于当前文件夹的模板

3. 测试模板

运行命令dotnet new abc -n 5DThinking.Test -o TestTemplate,新项目成功在TestTemplate目录下生成,名字也都统一改为5DThinking.Test

4. 遇到的坑

现在运行新项目,出现一堆错误,主要是两类:1.NuGet包还原问题 2..resx文件报错

临时解决办法:

  1. 从模板项目lib目录中复制.dll文件到新项目相应目录中并覆盖,在项目中重新引用
  2. 从模板项目复制.resx文件到新项目相应目录中并覆盖

注:这个解决办法是野路子,虽然也行,但比较Low,下面尝试打包的方式来解决

5. 用NuGet生成包

5.1 根目录GMS下创建Content\GMSTemplate目录,将模板文件及文件夹都复制进来

5.2 template.json文件修改为:

{
"$schema": "http://json.schemastore.org/template",
"author": "5DThinking",
"classifications": [ "WinForm" ],
"name": "5DThinking WinForm GMS v1.0",
"identity": "GMS.WinForm.1.0.Template",
"shortName": "gms1.0",
"tags": {
"language": "C#" ,
"type":"project"
},
"sourceName": "Thinking.GMS",
"preferNameDirectory": true
}

5.3 在GMS目录下创建GMSTemplate.nuspec文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>GMSTemplate</id>
<version>1.0.1</version>
<description>
GMS(General Management System) For WinForm
</description>
<authors>5DThinking</authors>
<packageTypes>
<packageType name="Template" />
</packageTypes>
</metadata>
</package>

5.4 用NuGet打包,在GMS目录下执行命令nuget pack GMSTemplate.nuspec -OutputDirectory .,然后生成GMSTemplate.1.0.1.nupkg文件

5.5 在GMS目录下创建CreateYourProject.bat文件,内容如下:

color 4
dotnet new -i GMSTemplate.1.0.1.nupkg
set /p OP=Please set your project name(for example:Baidu.Api):
md .1YourProject
cd .1YourProject
dotnet new gms1.0 -n %OP%
cd ../
echo "Create Successfully!!!! ^ please see the folder .1YourProject"
dotnet new -u GMSTemplate
echo "Delete Template Successfully"
pause

5.6 双击执行CreateYourProject.bat文件,按提示输入新的项目名称,大功告成!



C# WinForm自制项目模板入坑记的更多相关文章

  1. Kylo 入坑记

    一.概述 Kylo,作为一个基于 Spark 和 NiFi 的开源数据湖编排框架,解决对数据湖获取.治理.感知和技术支持等诸多问题.Kylo 将数据湖的很多功能自动化,包括数据接入.准备.分析发现.P ...

  2. Spring Cloud Gateway入坑记

    Spring Cloud Gateway入坑记 前提 最近在做老系统的重构,重构完成后新系统中需要引入一个网关服务,作为新系统和老系统接口的适配和代理.之前,很多网关应用使用的是Spring-Clou ...

  3. Android项目开发填坑记-so文件引发的攻坚战

    故事的最初 我负责的项目A要求有播放在线视频的功能,当时从别人的聊天记录的一瞥中发现百度有相关的SDK,当时找到的是Baidu-T5Player-SDK-Android-1.4s,项目中Demo的so ...

  4. Android项目开发填坑记-Fragment的onBackPressed

    Github版 CSDN版 知识背景 Fragment在当前的Android开发中,有两种引用方式,一个是 Android 3.0 时加入的,一个是supportV4包中的.这里简称为Fragment ...

  5. Android项目开发填坑记-Fragment的onAttach

    背景 现在Android开发多使用一个Activity管理多个Fragment进行开发,不免需要两者相互传递数据,一般是给Fragment添加回调接口,让Activity继承并实现. 回调接口一般都写 ...

  6. Hadoop入坑记

    Hadoop入坑记 按照官方给的伪分布式配置 etc/hadoop/core-site.xml: <configuration> <property> <name> ...

  7. conda命令入坑记

    conda命令入坑记 本人使用的软件版本: TypeError: LoadLibrary() argument 1 must be str, not None 网上太多的资料,大多都是在讲path的设 ...

  8. 【netcore入坑记】 .Net core UseRowNumberForPaging 分页报错 SQL Server 2008 R2 EntityFrameworkCore

    异常环境: netcore版本:.Net Core 2.1 efcore版本:Microsoft.EntityFrameworkCore.SqlServer 2.1.1 sql sqlserver 版 ...

  9. Jenkins入坑记

    记录一遍Jenkins初级使用教程 一,安装 (操作系统 centerOS7) 1-1.本次使用的是rpm包安装方式,在Jenkins官网下载rpm安装文件 下载地址: https://pkg.jen ...

  10. ALS部署Spark集群入坑记

    [Stage 236:> (0 + 0) / 400]17/12/04 09:45:55 ERROR yarn.ApplicationMaster: User class threw excep ...

随机推荐

  1. acedCommand 之使用镜像命令

    ads_name ent; ads_point pt2, pt3; if (acedSSGet(NULL, NULL, NULL, NULL, ent) != RTNORM) { return; } ...

  2. IceRPC之多路复用传输>快乐的RPC

    作者引言 很高兴啊,我们来到了IceRPC之多路复用传输>快乐的RPC,基础引导,打好基础,才能让自已不在迷茫,快乐的畅游世界. icerpc 和多路复用传输 了解 icerpc 协议和多路复用 ...

  3. EasyUI框架Datagrid(数据表格)的实现,以及Datagrid的分页显示(详解)

    在前端页面中使用EasyUI框架时,通常会使用EasyUI自带的datagrid(数据表格)样式,下面我们对datagrid样式进行简单的介绍,并且会对datagrid的分页显示进行详细的介绍. Ea ...

  4. 为WPF框架Prism注册Nlog日志服务

    这篇文章介绍了为WPF框架Prism注册Nlog日志服务的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧   无论是Nlog还是Serilog, 它们都提供 ...

  5. rofi编译支持中文输入版本

    准备工作 git clone https://github.com/davatorium/rofi.git 根据网上的信息,rofi 中文输入主要是依赖 xcb-imdkit 这个库 当然我们是使用源 ...

  6. vue3+vant 引入Dialog Toast都会失败报错not defined

    今天在封装vant组件的时候,刚好要用到toast提示信息的组件,索性就按照官网提供的引入方法进行正常的引入,嘿,好家伙,一顿操作下来后发现竟然报Toast未定义,这就纳闷了,明明步骤都是对的啊,所以 ...

  7. MDK5常见问题

    (1)MDK5下载时未找到对应的芯片 解决方式:需要下载pack包. 官方链接:https://www.keil.com/dd2/pack/ 其它链接:https://blog.csdn.net/ni ...

  8. .net core (.net6) 读取配置文件 appsettings.json

    .net core (.net6) 读取配置文件 appsettings.json 新建个工具类,方便其它地方使用,代码如下 AppHelper: namespace net6mvc.Utils { ...

  9. work12

    day12   一.请简述集合框架. 集合是单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set.其中,List的 ...

  10. npm 发布自己的组件库

    npm 发布组件库步骤 第一步:注册 npm 账号 第二步:编写自己的组件库 第三部:编写 package.json 可以通过命令生成 npm init { "name": &qu ...