.NET5 自定义项目模板
1、自定义项目模板,推荐使用第二种打包NuGet,使用更方便
- 创建模板配置文件
在项目文件夹根目录创建.template.config
文件夹,在文件夹下创建新的文件:template.json
内容如下:
{ "$schema": "http://json.schemastore.org/template", //必须,模板的作者 "author": "te.1", //必须,模板的分类 "classifications": [ "Web", "WebAPI.Template" ], //必须,模板的名称(改成自己的项目名称) "name": "API.Temp", //可选,模板的唯一名称 "identity": "API.template.CSharp", //可选,简短名称 "shortName": "apitemp", //必须,模板指定了一些标签 "tags": { "language": "C#", "type": "project" }, //可选,要替换的名字 这就就行新建项目时替换成新的名称 "sourceName": "API.Template", //是否生成相同名称的目录,可选 "preferNameDirectory": true }
我的项目结构如下:
- 项目模板安装
打开命令行进入项目目录,运行以下命令以安装位于当前文件夹的模板:
- 在 Windows 上:
dotnet new -i .\
- 在 Linux 或 macOS 上:
dotnet new -i ./
- 使用模板新建项目
使用命令 :dotnet new apitemp -n Test
创建test项目
创建完成的项目结构:
使用命令 dotnet new -u 查看安装的模板卸载命令,例如下图,可以直接使用命令 dotnet new -u E:\NET\AppletsShare副本 卸载已安装的模板
2、创建模板NuGet包项目
- 创建模板配置文件
在项目顶级根目录创建templatepack.csproj
修改内容如下:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <!-- 包类型使用与包Id相同的格式,并由分隔 ; 。 包类型可通过追加 , 和字符串进行版本控制 --> <!-- 示例 <PackageType>CustomType1, 1.0.0.0;CustomType2</PackageType> --> <PackageType>Template</PackageType> <!-- 指定生成的包所具有的版本 --> <PackageVersion>1.0</PackageVersion> <!-- 唯一名称,卸载安装时使用 --> <PackageId>API.Template</PackageId> <!-- 包标题 --> <Title>WebApi Template</Title> <!-- 作者名称,多个以分号分隔 --> <Authors>te.1</Authors> <!-- 包描述 --> <Description>创建应用程序时使用的模板。</Description> <!--使用默认值即可, 必须设置 <TargetFramework> 设置,以便在运行 pack 命令编译和打包项目时 MSBuild 正常运行。 --> <TargetFramework>net5.0</TargetFramework> <!-- 标记的分号分隔列表,这些标记用于指定包 --> <PackageTags>dotnet-new;templates;contoso</PackageTags> <!-- 以下配置可以不管 --> <IncludeContentInPack>true</IncludeContentInPack> <IncludeBuildOutput>false</IncludeBuildOutput> <ContentTargetFolders>content</ContentTargetFolders> <NoWarn>$(NoWarn);NU5128</NoWarn> </PropertyGroup> <!-- 排除bin、obj文件夹 注意:需要把templates换成你的文件路径 --> <ItemGroup> <Content Include="templates\**\*" Exclude="templates\**\bin\**;templates\**\obj\**" /> <Compile Remove="**\*" /> </ItemGroup> </Project>
-
生成和安装
项目结构目录必须如下:
项目根目录
│ templatepack.csproj
└───templates
└───.template.config
└───template.json
在项目根目录下打开命令行,使用命令dotnet pack
此命令会生成项目,并在 项目根目录\bin\Debug 文件夹中创建一个 NuGet 包,如以下输出所示:
接下来,使用 dotnet new -i PATH_TO_NUPKG_FILE
命令安装模板包文件,完整命令如下。
dotnet new -i E:\NET\AppletsShare副本\bin\Debug\API.Template.1.0.0.nupkg
使用命令 dotnet new -u
查看安装的模板卸载命令,例如下图,可以直接使用命令 dotnet new -u API.Template副本 卸载已安装的模板
- 使用
nuget.exe
打包,这种方式打包跟上一种唯一的区别是可以关掉打包时默认排除.开头的文件或文件夹,注意需要先把项目下的bin、obj 文件夹删除掉,否则会把两个文件夹也打包进去 - 从NuGet Gallery | Downloads 下载 nuget.exe文件
- 新建
templates.nuspec
文件,内容如下:
<?xml version="1.0" encoding="utf-8"?> <package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd"> <metadata> <id>API.Template</id><!--修改模板id,下面的内容保持默认即可--> <version>1.0.0</version> <description> WebApi Template, including WebApi </description> <authors>muxue</authors> <packageTypes> <packageType name="Template" /> </packageTypes> </metadata> </package>
- 命令行运行:
nuget.exe pack templates.nuspec -NoDefaultExcludes -OutputDirectory .
会在当前目录生成 API.Template.1.0.0.nupkg文件
-
接下来,使用
dotnet new -i PATH_TO_NUPKG_FILE
命令安装模板包文件,完整命令如下。dotnet new -i .\API.Template.1.0.0.nupkg
创建项目 命令 :dotnet new apitemp -n Test
创建test项目