2021-06-30 乐帮网
nuget netcore
本教程主要介绍使用dotnet命令行来创建、安装、卸载模板。在最底部会提供相应的源代码下载。注意在使得此功能之前需要升级为.Net5.0。下面就开始我们的创建模板之旅。
一、创建目录结构
在电脑中新建以下目录结构
demo_template
├───test
└───working
└───template
test将用于测试文件夹,working是我们主要文件夹,template这个是放置模板的文件夹,这里有一个地方是需要注意的。所有的文件夹都是可以改名的,除了template。
二、创建模板项目
新建一个单独的项目,此次我们直接使用Visaul Studio 2019创建一个控制台类型的项目,位置放到任意目录,(注意这里可以是任意类型项目,也可以是任意版本项目),项目名称:vkt.demo.console,默认创建好后我们修改一下输出方法如下:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello lebang2020.cn!");
}
}
然后把项目文件和相关的类复制到 template文件夹中。
目录结构变成这样:
demo_template
├───test
└───working
└───template
└───vkt.demo.console
三、创建模板配置文件
模板项目我们已经放置到位了,下一步就是新建一个模板配置文件。我们在以上的vkt.demo.console中新建一个文件夹 .template.config。然后在这个文件夹中新建一个json配置文件 template.json。注意 .template.config/template.json这些名称是固定的。不要修改它。
目录结构是这样的
demo_template
├───test
└───working
└───template
└───vkt.demo.console
└───Program.cs
└───vkt.demo.console.csproj
└───.template.config
└───template.json
其中 template.json中的内容为:
{
"$schema": "http://json.schemastore.org/template",
"author": "lebang2020",
"classifications": [ "Common", "Console" ],
"identity": "vkt.demo.template.console",
"name": "vkt demo templates: console extensions",
"shortName": "vktconsole",
"tags": {
"language": "C#",
"type": "project"
}
}
四、新建打包项目
打包项目的意义在于传递打包参数,包含打包的内容待信息。这里我们在working目录下新建项目文件templatepack.csproj,内容如下:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<PackageType>Template</PackageType>
<PackageVersion>1.0</PackageVersion>
<PackageId>vkt.demo.template.console</PackageId>
<Title>vkt templates</Title>
<Authors>lebang2020</Authors>
<Description>This is a vkt demo template just for lebanag2020 Corporation.</Description>
<PackageTags>dotnet-new;templates;contoso</PackageTags>
<TargetFramework>netstandard2.0</TargetFramework>
<IncludeContentInPack>true</IncludeContentInPack>
<IncludeBuildOutput>false</IncludeBuildOutput>
<ContentTargetFolders>content</ContentTargetFolders>
<NoWarn>$(NoWarn);NU5128</NoWarn>
</PropertyGroup>
<ItemGroup>
<Content Include="templates\**\*" Exclude="templates\**\bin\**;templates\**\obj\**" />
<Compile Remove="**\*" />
</ItemGroup>
</Project>
可见通过ItemGroup/Content 我们可以灵活控制模板的内容。
五、生成打包文件
首先打开CMD命令行,再切换到working目录下。执行以下命令:
dotnet pack
D:\Demo\demo_template\working>dotnet pack
用于 .NET 的 Microsoft (R) 生成引擎版本 16.10.1+2fd48ab73
版权所有(C) Microsoft Corporation。保留所有权利。
正在确定要还原的项目…
所有项目均是最新的,无法还原。
templatepack -> D:\Demo\demo_template\working\bin\Debug\netstandard2.0\templatepack.dll
已成功创建包“D:\Demo\demo_template\working\bin\Debug\vkt.demo.template.console.1.0.0.nupkg”。
最终我们得到了包 vkt.demo.template.console.1.0.0.nupkg
六、安装使用包
nupkg包的目录:D:\Demo\demo_template\working\bin\Debug\vkt.demo.template.console.1.0.0.nupkg
下面我们使用这个包,当然也可以上传到自己的nuget服务器上,然后配置一个源就搞定了。这里我以本的包来做测试。
安装包:
dotnet new -i D:\Demo\demo_template\working\bin\Debug\vkt.demo.template.console.1.0.0.nupkg
模板名 短名称 语言 标记
-------------------------------------------- ------------------- ---------- ----------------------
Console Application console [C#],F#,VB Common/Console
vkt demo templates: console extensions vktconsole [C#] Common/Console
Class library classlib [C#],F#,VB Common/Library
WPF Application wpf [C#],VB Common/WPF
WPF Class library wpflib [C#],VB Common/WPF
WPF Custom Control Library wpfcustomcontrollib [C#],VB Common/WPF
WPF User Control Library wpfusercontrollib [C#],VB Common/WPF
Windows Forms App winforms [C#],VB Common/WinForms
Windows Forms Control Library winformscontrollib [C#],VB Common/WinForms
Windows Forms Class Library winformslib [C#],VB Common/WinForms
Worker Service worker [C#],F# Common/Worker/Web
MSTest Test Project mstest [C#],F#,VB Test/MSTest
NUnit 3 Test Project nunit [C#],F#,VB Test/NUnit
NUnit 3 Test Item nunit-test [C#],F#,VB Test/NUnit
xUnit Test Project xunit [C#],F#,VB Test/xUnit
Razor Component razorcomponent [C#] Web/ASP.NET
Razor Page page [C#] Web/ASP.NET
MVC ViewImports viewimports [C#] Web/ASP.NET
MVC ViewStart viewstart [C#] Web/ASP.NET
Blazor Server App blazorserver [C#] Web/Blazor
Blazor WebAssembly App blazorwasm [C#] Web/Blazor/WebAssembly
ASP.NET Core Empty web [C#],F# Web/Empty
ASP.NET Core Web App (Model-View-Controller) mvc [C#],F# Web/MVC
ASP.NET Core Web App webapp [C#] Web/MVC/Razor Pages
ASP.NET Core with Angular angular [C#] Web/MVC/SPA
ASP.NET Core with React.js react [C#] Web/MVC/SPA
ASP.NET Core with React.js and Redux reactredux [C#] Web/MVC/SPA
Razor Class Library razorclasslib [C#] Web/Razor/Library
ASP.NET Core Web API webapi [C#],F# Web/WebAPI
ASP.NET Core gRPC Service grpc [C#] Web/gRPC
dotnet gitignore file gitignore Config
global.json file globaljson Config
NuGet Config nugetconfig Config
Dotnet local tool manifest file tool-manifest Config
Web Config webconfig Config
Solution File sln Solution
Protocol Buffer File proto Web/gRPC
Examples:
dotnet new mvc --auth Individual
dotnet new blazorserver --auth Individual
dotnet new --help
dotnet new vktconsole --help
这个时候我们看到了关键字vktconsole,证明已经安装成功了。下面就是使用:首先换成到test 文件夹下,执行命令:dotnet new vktconsole
D:\Demo\demo_template\working\test>dotnet new vktconsole
已成功创建模板“vkt demo templates: console extensions”。
至此在test文件夹下可以看到按模板创建的项目。这个正是我们需要的。写在最后:我们可以使用dotnet new -u 进行卸载包。那么我的卸载命令就是 dotnet new -u vkt.demo.template.console
可以使用dotnet new -l 来查看可用的ID。更多的信息参考以下链接:
https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new
https://docs.microsoft.com/zh-cn/dotnet/core/tutorials/cli-templates-create-template-pack
我把自己的源码打包入到了云盘上地址如下:
链接:https://pan.baidu.com/s/1ShcnRzFrvZOfPhqCSytdyg
关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com
庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。
如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力