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. 珠排序算法C# 简单实现 奇葩排序中的算盘排序(算珠排序)算法

    Console.WriteLine("Hello World!"); int[] arr = { 1, 3, 4, 0, 22, 4,0, 6, 3,10,8,6,7 }; Con ...

  2. Gitea 代码仓库平台

    引言 Gitea 是一个自己托管的 Git 服务程序.他和 GitHub,Bitbucket or Gitlab 等比较类似.它是从 Gogs 发展而来,不过它已经 Fork 并且命名为 Gitea. ...

  3. gossh nohup部署退出解决方法

    ssh 会话远程nohup ./node> node.out & 执行指令,会话退出以后也会导致服务并没有部署成功. 应该使用以下命令:nohup ./node > node.ou ...

  4. 恭喜PaddleOCRSharp开源项目通过PaddleOCR社区常规赛优秀项目首次评选

    PaddleOCR优秀社区项目推荐: PaddleOCR社区常规赛首次评选结果已于日前出炉,本次优秀项目推广为大家带来的是[部署篇]:️ PaddleOCR的.NET调用库:包含文本识别.文本检测.基 ...

  5. 2023 Hive 面试大纲

    先说一些废话 总结一下Hive面试宝典中的要点,方便读者快速过一遍Hive面试所需要的知识点. 本文请搭配 Hive面试宝典 来食用更美味哟 ┗( ▔, ▔ )┛ 方便自己系统性回忆,根据*的数量来标 ...

  6. 反外挂 DDos UDP 攻击只需客户端 开着游戏客户端

    #include<WINSOCK2.H> #include<iostream> #include<string> using namespace std; #inc ...

  7. 项目管理--PMBOK 读书笔记(5)【项目范围管理】

      知识点: 1.范围管理计划与需求管理计划:       需求大于范围 2.项目管理的成果线: 3.收集需求的跟踪:       需求跟踪矩阵(RTM):溯源.商业价值.监控过程输出 4.项目范围说 ...

  8. JS模拟循环批量请求后台接口

    使用async, await处理异步请求.用Promise, setTimeout函数模拟后台接口 <!DOCTYPE html> <html> <script type ...

  9. Python 使用Matplotlib绘制可拖动的折线

    Python 使用Matplotlib绘制可拖动的折线 效果图:  可以拖曲线上的点调整, 也可以拖旁边的sliderbar调整. 代码如下: import matplotlib.animation ...

  10. VSCode因网络问题导致下载更新/扩展出错

    VSCode因网络问题导致下载更新/扩展出错 可尝试方法:   问题0: VSCode出现网络问题排查方法?       法1: 启动时加上选项 --log-net-log=netlog.json   ...