zoukankan      html  css  js  c++  java
  • 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文件报错
    临时解决办法:

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

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

    5. 用NuGet生成包

    5.1 根目录GMS下创建ContentGMSTemplate目录,将模板文件及文件夹都复制进来
    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文件,按提示输入新的项目名称,大功告成!

  • 相关阅读:
    Android系统四层架构分享
    tracebace用法
    Hadoop生态系统入门进阶之一
    Eclipse无法显示Android设计界面解决方案
    va_start和va_end使用详解
    Android实现左右滑动效果
    Android实现网络多线程断点续传下载
    基于TCP Socket的简单网络通信
    Android通过手势实现图像拖拽功能
    SHELLEXECUTEINFO 结构详解
  • 原文地址:https://www.cnblogs.com/zhaoshujie/p/12516072.html
Copyright © 2011-2022 走看看