You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Azure DevOps和NuGet打包并发布多项目解决方案模板

如何使用Azure DevOps和NuGet打包并发布多项目解决方案模板

先跟你唠唠我目前已经搞定的准备工作,然后再一步步说怎么用Azure DevOps和NuGet来完成打包发布:

我的现有项目与模板基础

我一直希望每个新的空白业务项目(greenfield application)都能自带三个核心项目,具体信息如下:

项目名称项目类型功能说明
MyTemplate.APIWeb API负责和外部消费者做通信交互
MyTemplate.PersistenceEF DB基于EF Core 8实现数据库访问逻辑
MyTemplate.DomainModels存放所有领域模型的集合

我已经搭好了一个包含这三个项目的新解决方案,目前是初始状态——只有一些基础文件夹,还有类似Web API默认自带的WeatherForecast那种示例文件。

之后我通过Visual Studio的「项目 > 导出模板」功能,给每个项目都生成了对应的zip压缩包,把这些zip包从默认输出位置移出来后,还专门加了一个通用的.vstemplate文件(里面还包含了自定义图标),这个模板文件的开头内容是这样的:

<VSTemplate Version="3.0.0" Type="..."

用Azure DevOps + NuGet打包发布的步骤

下面就是具体的操作流程啦:

1. 准备Azure DevOps仓库与流水线

  • 先把你的模板相关文件(三个项目的zip包、通用.vstemplate文件、图标等)上传到Azure DevOps的Git仓库里,确保文件结构清晰,比如可以建个template-files文件夹统一存放这些内容。
  • 打开Azure DevOps项目,新建一个经典流水线(或者用YAML流水线,看你习惯),选择对应的Git仓库作为源。

2. 配置打包任务(用NuGet打包模板)

  • 在流水线里添加一个NuGet任务,选择pack命令。
  • 你需要创建一个.nuspec文件,用来定义NuGet包的元数据(包名、版本、作者等),同时指定要包含的模板文件。比如.nuspec的核心内容大概是这样的:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>
    <id>MyTemplate.Solution</id>
    <version>1.0.0</version>
    <authors>Your Name</authors>
    <description>Multi-project solution template for greenfield applications</description>
    <tags>dotnet-template solution-template</tags>
  </metadata>
  <files>
    <file src="template-files/**/*" target="content/MyTemplate" />
  </files>
</package>
  • 在NuGet pack任务里指定这个.nuspec文件的路径,设置好版本号(可以用变量自动递增,方便后续迭代)。

3. 发布到NuGet源(Azure Artifacts或公共NuGet)

  • 如果用Azure Artifacts的私有源:添加一个NuGet任务,选择push命令,指定Azure Artifacts的源地址,配置好服务连接(提前在Azure DevOps里创建好),然后把打包好的.nupkg文件推上去。
  • 如果要发布到公共NuGet:同样用NuGet push任务,输入公共NuGet的API密钥,指定包的路径即可。

4. 测试模板使用

  • 发布成功后,在本地用命令行安装模板:dotnet new install MyTemplate.Solution::1.0.0
  • 然后就可以用dotnet new MyTemplate.Solution来创建包含那三个项目的新解决方案啦。

一些小提示

  • 记得在.vstemplate文件里正确配置好各个项目的引用关系,确保创建新解决方案时项目之间的依赖能正常识别。
  • 流水线里可以添加版本号变量,每次发布时自动更新版本,避免手动修改的麻烦。
  • 如果需要自定义模板的输入参数,可以在.vstemplate里添加TemplateParameter节点,让用户创建项目时能自定义项目名等信息。

备注:内容来源于stack exchange,提问作者kbd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:43:03