上一篇介绍了如何创建项目模板,接下来介绍一下如何创建脚手架,动态生成项目所需要的代码,这样有利于公司内部的代码结构统一,并且能够减少重复性工作。
简介
NET 命令行接口 (CLI) 工具是用于开发、生成、运行和发布 .NET 应用程序的跨平台工具链。
本次主要介绍的是 dotnet new 命令,可以通过这个命令创建我们的自定义模板,我们安装完.NET SDK后,本身自带了一些项目模板,可以通过 dotnet new --list 查看已经安装的模板。
第一步
创建一个解决方案里面放上自己需要的项目,并且已经将功能开发完成了(基建功能)
如下图(我这就随便放了几个,注意这个关键词 Template很重要,一定要统一)
第二步 创建模板目录和配置文件
在项目所在的目录创建一个.template.config 文件夹,内部创建template.json 文件,文件内的语法如下 文件内容如下
{
"$schema": "http://json.schemastore.org/template",
"author": "iml6yu",
"classifications": [ "webapi", "iml6yu" ],
"name": "一个测试模板",
"identity": "iml6yu.test.tmp",
"shortName": "itt",
"tags": {
"language": "C#",
"type": "project"
},
"sourceName": "Template",
"preferNameDirectory": true
}
文件目录结构如下(.template.config中式template.json文件) #第三步 打包 在目录外层创建一个templates文件夹将之前的所有内容都包裹起来,然后再创建一个package.csproj文件 如下图 文件内容如下
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<PackageType>Template</PackageType>
<PackageVersion>1.0.0-bate22031401</PackageVersion>
<PackageId>iml6yu.test.template</PackageId>
<Title>一个测试模板</Title>
<Authors>iml6yu</Authors>
<Description>这是一个测试的dotnet项目模板</Description>
<PackageTags>dotnet-new;templates;contoso</PackageTags>
<TargetFramework>netstandard2.0</TargetFramework>
<IncludeContentInPack>true</IncludeContentInPack>
<IncludeBuildOutput>false</IncludeBuildOutput>
<ContentTargetFolders>content</ContentTargetFolders>
<PackageIcon>favorite_64.png</PackageIcon>
<PackageIconUrl />
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
</PropertyGroup>
<ItemGroup>
<Content Include="templates\**\*" Exclude="templates\**\bin\**;templates\**\obj\**" />
<Compile Remove="**\*" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\liuyu\favorite_64.png">
<Pack>True</Pack>
<PackagePath></PackagePath>
</None>
</ItemGroup>
</Project>
打开powershell命令
写在前面,这里你要注意上一步的文件中涉及到包id,不要原封不动啊,这个包id nuget是不允许重复的 在此目录打开powershell命令,输入 dotnet pack
打包完成,你会在bin – debug 目录中扎到
上传到nuget网站上的,等待审核通过
安装
当上一步审核通过后,通过如下命令进行安装
dotnet new --install 你的包名
如果步只想用一下我的试试,可以这样写
dotnet new --install iml6yu.test.template
下一步就是打开你的vs,在最底下你能看到我得模板 是一堆?????,是因为我的中文编码问题导致的 哈哈
你也可以使用命令创建
dotnet new itt --name=Shabi
创建后的效果
剩下的就是熟悉的开发工作了
|