<?xml version="1.0" encoding="utf-8"?> <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> <metadata> <id>DynamicTplDemo</id> <version>1.0.0</version> <authors>Bai Li</authors> <description>动态模板包</description> <copyright>Copyright ©2021 Contoso Corporation</copyright> <packageTypes> <packageType /> </packageTypes> </metadata> <files> <file src="http://www.likecs.com/src\**" target="src" exclude="**\bin\**;**\obj\**" /> </files> </package>
官方文档中关于节点的说明定义很清晰,可前往查阅。需要注意的是files>file节点,这里用来排除模板中各子项目下的bin和obj文件夹。
打包模板,并生成.nupkg文件上面准备工作完成,开始进行打包。这里通过tools文件夹下的nuget.exe工具,将指定的模板项目打包称.nupkg文件,并输出到上面定义好的packages文件夹下。
切换到指定的项目文件夹下,执行如下命令:
E:\SourceCode\MyPractices\MyTestTemplates\tools\nuget.exe pack DynamicTplDemo.nuspec -OutputDirectory E:\SourceCode\MyPractices\MyTestTemplates\packages
当提示如下内容,则表示生成包成功。
在packages文件夹下,可以看到已生成包:
发布包
想要在不同机器上方便使用包,是需要将包发布到nuget包服务器上,通常有两种方式:Nuget.org、私有源。
发布到Nuget.org参考文档:https://docs.microsoft.com/zh-cn/nuget/nuget-org/publish-a-package
发布到私有源参考文档:https://docs.microsoft.com/zh-cn/nuget/hosting-packages/overview
私有源有Azure、Nuget.Server、开源项目。
这里使用Baget开源项目(https://github.com/loic-sharma/BaGet),通过Docker部署,直接使用公共镜像:
#拉取镜像 docker pull loicsharma/baget #运行容器 docker run --rm --name nuget-server -p 50557:80 loicsharma/baget:latest
注:此处使用公共镜像部署仅为了简单展示包的上传和安装步骤。
Baget部署后,使用nuget.exe上传包:
参考文档:https://docs.microsoft.com/zh-cn/nuget/reference/cli-reference/cli-ref-push
nuget.exe push E:\SourceCode\MyPractices\MyTestTemplates\packages\DynamicTplDemo.1.0.0.nupkg -src :50557/v3/index.json
上传成功后,可以在Baget服务器上看到上传的包。
使用包 添加源
将上面自建的Nuget源添加到Nuget配置中,以便后面使用,添加源命令:
dotnet nuget add source :50557/v3/index.json -n MyBaget
安装包
dotnet new --install DynamicTplDemo::1.0.0
安装成功后,可以看到该包:
使用包
包的使用,跟上面“创建动态模板”的“使用模板创建项目”方式一致:
dotnet new DynamicTplDemo -n MyDynamicTpl -o E:\SourceCode\MyPractices\MyTestTemplates\codes\MyDynamicTpl -S MSSQL