rectory": true
}
在 content 目录内创建一个 nuspec 文件:Custom.Template.NetCore.nuspec,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>Custom.Template.NetCore</id>
<version>1.0.1</version>
<description>
Custom Template, including WebApi, Console
</description>
<authors>Artech</authors>
<packageTypes>
<packageType name="Template" />
</packageTypes>
</metadata>
</package>
- 需要注意,packageType 为 Template,metadata.id 必须保证唯一,其他按需设置即可。
- 必须是在 content 文件夹内。nuget 在打包的时候,是根据 content 文件夹来进行的。
使用 nuget pack 命令打包
# 注意路径的相对位置
nuget pack Custom.Template.NetCore.nuspec -OutputDirectory .
打包后的内容为:
发布该 nuget 包到 nuget server
这里用的是自建 nuget server,你可以按自身情况打包上传。
- 你可以直接使用 Nuget Package Explorer 进行发布包
- 也可以使用 nuget push 来发布,如下:
nuget push Custom.Template.NetCore.1.0.1.nupkg -Source "你的nuget 服务 url" -ApiKey "你的nuget api key"
通过 nuget 安装模板到本地
通过模板安装 CustomWebApi
安装路径为:D:\TestWebApiTemplate
dotnet new CustomWebApi -n Company.Group -o .
创建一个解决方案,并将所有的项目添加到解决方案 Company.Group.sln 中
dotnet new sln -n Company.Group
# windows 下无法使用 glob pattern 只能逐个添加
dotnet sln Company.Group.sln add Company.Group.Application\Company.Group.Application.csproj
dotnet sln Company.Group.sln add Company.Group.Domain\Company.Group.Domain.csproj
dotnet sln Company.Group.sln add Company.Group.DomainService\Company.Group.DomainService.csproj
dotnet sln Company.Group.sln add Company.Group.IApplication\Company.Group.IApplication.csproj
dotnet sln Company.Group.sln add Company.Group.IDomainService\Company.Group.IDomainService.csproj
dotnet sln Company.Group.sln add Company.Group.Infrastructure.CrossCutting\Company.Group.Infrastructure.CrossCutting.csproj
dotnet sln Company.Group.sln add Company.Group.Repository\Company.Group.Repository.csproj
dotnet sln Company.Group.sln add Company.Group.WebApi\Company.Group.WebApi.csproj
如果你用的是 mac / linux ,则可以直接用 globbing pattern 来添加,如下:
dotnet sln Company.Group.sln add **/*.csproj
参考
https://devblogs.microsoft.com/dotnet/how-to-create-your-own-templates-for-dotnet-new/
https://github.com/dotnet/dotnet-template-samples
https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-new?tabs=netcore22
https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools