C# WinForm自制项目模板入坑记
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文件报错
临时解决办法:
- 从模板项目
lib目录中复制.dll文件到新项目相应目录中并覆盖,在项目中重新引用 - 从模板项目复制
.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自制项目模板入坑记的更多相关文章
- Kylo 入坑记
一.概述 Kylo,作为一个基于 Spark 和 NiFi 的开源数据湖编排框架,解决对数据湖获取.治理.感知和技术支持等诸多问题.Kylo 将数据湖的很多功能自动化,包括数据接入.准备.分析发现.P ...
- Spring Cloud Gateway入坑记
Spring Cloud Gateway入坑记 前提 最近在做老系统的重构,重构完成后新系统中需要引入一个网关服务,作为新系统和老系统接口的适配和代理.之前,很多网关应用使用的是Spring-Clou ...
- Android项目开发填坑记-so文件引发的攻坚战
故事的最初 我负责的项目A要求有播放在线视频的功能,当时从别人的聊天记录的一瞥中发现百度有相关的SDK,当时找到的是Baidu-T5Player-SDK-Android-1.4s,项目中Demo的so ...
- Android项目开发填坑记-Fragment的onBackPressed
Github版 CSDN版 知识背景 Fragment在当前的Android开发中,有两种引用方式,一个是 Android 3.0 时加入的,一个是supportV4包中的.这里简称为Fragment ...
- Android项目开发填坑记-Fragment的onAttach
背景 现在Android开发多使用一个Activity管理多个Fragment进行开发,不免需要两者相互传递数据,一般是给Fragment添加回调接口,让Activity继承并实现. 回调接口一般都写 ...
- Hadoop入坑记
Hadoop入坑记 按照官方给的伪分布式配置 etc/hadoop/core-site.xml: <configuration> <property> <name> ...
- conda命令入坑记
conda命令入坑记 本人使用的软件版本: TypeError: LoadLibrary() argument 1 must be str, not None 网上太多的资料,大多都是在讲path的设 ...
- 【netcore入坑记】 .Net core UseRowNumberForPaging 分页报错 SQL Server 2008 R2 EntityFrameworkCore
异常环境: netcore版本:.Net Core 2.1 efcore版本:Microsoft.EntityFrameworkCore.SqlServer 2.1.1 sql sqlserver 版 ...
- Jenkins入坑记
记录一遍Jenkins初级使用教程 一,安装 (操作系统 centerOS7) 1-1.本次使用的是rpm包安装方式,在Jenkins官网下载rpm安装文件 下载地址: https://pkg.jen ...
- ALS部署Spark集群入坑记
[Stage 236:> (0 + 0) / 400]17/12/04 09:45:55 ERROR yarn.ApplicationMaster: User class threw excep ...
随机推荐
- acedCommand 之使用镜像命令
ads_name ent; ads_point pt2, pt3; if (acedSSGet(NULL, NULL, NULL, NULL, ent) != RTNORM) { return; } ...
- IceRPC之多路复用传输>快乐的RPC
作者引言 很高兴啊,我们来到了IceRPC之多路复用传输>快乐的RPC,基础引导,打好基础,才能让自已不在迷茫,快乐的畅游世界. icerpc 和多路复用传输 了解 icerpc 协议和多路复用 ...
- EasyUI框架Datagrid(数据表格)的实现,以及Datagrid的分页显示(详解)
在前端页面中使用EasyUI框架时,通常会使用EasyUI自带的datagrid(数据表格)样式,下面我们对datagrid样式进行简单的介绍,并且会对datagrid的分页显示进行详细的介绍. Ea ...
- 为WPF框架Prism注册Nlog日志服务
这篇文章介绍了为WPF框架Prism注册Nlog日志服务的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 无论是Nlog还是Serilog, 它们都提供 ...
- rofi编译支持中文输入版本
准备工作 git clone https://github.com/davatorium/rofi.git 根据网上的信息,rofi 中文输入主要是依赖 xcb-imdkit 这个库 当然我们是使用源 ...
- vue3+vant 引入Dialog Toast都会失败报错not defined
今天在封装vant组件的时候,刚好要用到toast提示信息的组件,索性就按照官网提供的引入方法进行正常的引入,嘿,好家伙,一顿操作下来后发现竟然报Toast未定义,这就纳闷了,明明步骤都是对的啊,所以 ...
- MDK5常见问题
(1)MDK5下载时未找到对应的芯片 解决方式:需要下载pack包. 官方链接:https://www.keil.com/dd2/pack/ 其它链接:https://blog.csdn.net/ni ...
- .net core (.net6) 读取配置文件 appsettings.json
.net core (.net6) 读取配置文件 appsettings.json 新建个工具类,方便其它地方使用,代码如下 AppHelper: namespace net6mvc.Utils { ...
- work12
day12 一.请简述集合框架. 集合是单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set.其中,List的 ...
- npm 发布自己的组件库
npm 发布组件库步骤 第一步:注册 npm 账号 第二步:编写自己的组件库 第三部:编写 package.json 可以通过命令生成 npm init { "name": &qu ...