类别
标签
.net项目模板的搭建

前言


我们通过Visual Studio创建新项目的时候会看到很多项目模板,选择对应的项目模板,可以很方便的创建一个自己想要的项目结构,那么这些项目模板是如何创建并添加到Visual Studio的呢?

这篇文章我带你一步一步搭建一个属于自己的项目模板。

屏幕截图 2024-10-30 152613.jpg


结构


我们先来看下这类项目模板的结构。

image.png

icon.png

模板Nuget包的图标,即显示出来的小图标。

Hcf.Template.Mvc.nuspec

Nuget包的配置信息,也就是你需要创建一个以.nuspec结尾的nuget配置信息,配置信息内容如下

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>Hcf.Template.Mvc</id> <!-- 唯一名称 -->
    <version>1.0.0</version> <!-- 版本号 -->
    <description>Hcf WebMvc Template </description> <!-- 描述 -->
    <authors>Lemon</authors> <!-- 作者 -->
	<requireLicenseAcceptance>false</requireLicenseAcceptance>
    <license type="expression">MIT</license>
    <licenseUrl>https://licenses.nuget.org/MIT</licenseUrl>
    <icon>icon.png</icon>
    <packageTypes>
      <packageType name="Template" />
    </packageTypes>
  </metadata>
</package>

src文件夹

该文件夹下存放的即为你的模板项目源码,你可以在该文件夹下存放你编写好的项目模板内容,如下所示

image.png

该文件夹结构为Hcf.Template.Mvc的项目模板,其中.template.config文件夹为项目模板的配置信息,其它文件为项目模板源码,你可以创建属于自己的项目模板内容

每个项目模板src文件夹下必须有一个.template.config的文件夹,该文件夹里面有一个.template.json的配置文件

image.png

配置内容如下

{
  "$schema": "http://json.schemastore.org/template",
  "author": "Lemon", //作者
  "classifications": ["Hcf", "Web", "Mvc"], //分类定义
  "name": "Hcf Mvc", //模板名称
  "identity": "Hcf.Template.Mvc", //唯一Id
  "shortName": "hcfmvc", //短名称,后面创建项目的时候需要通过该名称创建
  "tags": {
    "language": "C#",
    "type": "project"
  },
  "sourceName": "Hcf.Template", //源名称,创建项目的时候将会替换你项目模板源码中的Hcf.Template内容
  "preferNameDirectory": true,
  "symbols": {
    "framework": {  //框架选择,可以定义其它更多内容
      "type": "parameter",
      "datatype": "choice",
      "choices": [
        {
          "choice": "net6",
          "description": ".NET6 脚手架"
        },
        {
          "choice": "net7",
          "description": ".NET7 脚手架"
        },
        {
          "choice": "net8",
          "description": ".NET8 脚手架"
        }
      ],
      "defaultValue": "net8",
      "description": "选择要创建的 .NET6-8 脚手架"
    },
    "net6": {
      "type": "computed",
      "value": "(framework == \"net6\")"
    },
    "net7": {
      "type": "computed",
      "value": "(framework == \"net7\")"
    },
    "net8": {
      "type": "computed",
      "value": "(framework == \"net8\")"
    }
  }
}

以上为整个项目模板的结构内容


构建


我们创建好项目模板后,那么接下来就是创建nuget包,我们在开头就看到了有一个以.nuspec结尾的nuget配置文件,那么我们通过命令来构建。

打开命令行窗口,切换到该项目模板下面

.\nuget.exe pack ./HcfMvcTemplate/Hcf.Template.Mvc.nuspec -OutputDirectory .\Packages

.\nuget.exe:你的nuget可执行文件

./HcfMvcTemplate/Hcf.Template.Mvc.nuspec:刚才提到的nuget配置文件

-OutputDirectory .\Packages 输出目录

执行该命令后输出

image.png

代码执行成功,那么在指定目录下会生成一个 Hcf.Template.Mvc.1.0.0.nupkg 包文件,这样代码已经打包成功

接下来你可以直接将该包发布到nuget平台上,也可以直接使用该包

那么如何使用,请关注下一篇文章