我有什么
我希望在每个新的绿地申请中看到三个项目:
项目 | 类型 | 注释 |
---|---|---|
我的模板.API | 网络API | 与外部消费者的沟通 |
我的模板.持久化 | EF数据库 | 通过 EF Core 8 访问数据库 |
我的模板.域 | 型号 | 所有领域模型的集合 |
我创建了一个新的解决方案,其中除了一些文件夹和示例文件之外,还以虚拟状态添加了这 3 个项目(类似于通过 Web API 获取的 WeatherForeCast 信息)。
在 Visual Studio 中使用
Project > Export Template
对于每个项目,我都会获得 zip 文件的集合。
我将它们移出输出位置并添加通用
.vstemplate
文件(包括图标):
<VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<TemplateData>
<Name>My Solution Template</Name>
<Description>A solution template for custom application</Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>My Solution</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<Icon>myIcon.png</Icon>
</TemplateData>
<TemplateContent>
<ProjectCollection>
<ProjectTemplateLink ProjectName="$projectname$.API">
MyTemplate.API\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$projectname$.Persistence">
MyTemplate.Persistence\MyTemplate.vstemplate
</ProjectTemplateLink>
<ProjectTemplateLink ProjectName="$projectname$.Domain">
MyTemplate.Domain\MyTemplate.vstemplate
</ProjectTemplateLink>
</ProjectCollection>
</TemplateContent>
</VSTemplate>
接下来我执行以下步骤
.vstemplate
文件在那里本地模板文件夹对应:
%userprofile%\Documents\Visual Studio 2022\Templates\ProjectTemplates
如果我随后启动 Visual Studio 并选择“创建新项目”,我可以选择我的解决方案模板,一切似乎都已就位。
到目前为止一切顺利。
下一步是什么?
我想使用我已有的 Azure DevOps 管道来自动化这个相对费力的过程。我还没有找到有关如何打包和发布完整解决方案模板的信息。正如题主所说..
如何使用以下方式打包和发布多项目解决方案模板 azure devops 和 nuget?
我不知道要寻找什么,我发现提到了打包单个项目,但没有提到多项目解决方案,所以我不知道该去哪里寻找。
任何提示表示赞赏。
您已经为整个解决方案和各个项目创建了
.vstemplate
。确保它们与必要的项目文件和目录一起包含在您的源代码管理中。
您需要创建一个包含解决方案模板的 NuGet 包。这通常是通过创建一个
.nuspec
文件来完成的,该文件指定要包含在 NuGet 包中的文件。
.nuspec
文件。这是该文件的示例(这只是一个演示,只是让您知道如何使用文件选择):<?xml version="1.0"?>
<package >
<metadata>
<id>MySolutionTemplate</id>
<version>1.0.0</version>
<authors>YourName</authors>
<description>Template for My Solution with API, Persistence, and Domain projects.</description>
</metadata>
<files>
<file src="MyTemplate.API\**\*.*" target="content\MyTemplate.API" />
<file src="MyTemplate.Persistence\**\*.*" target="content\MyTemplate.Persistence" />
<file src="MyTemplate.Domain\**\*.*" target="content\MyTemplate.Domain" />
<file src="*.vstemplate" target="content" />
</files>
</package>
在 Azure DevOps 中创建 YAML 管道,以自动构建、打包和发布解决方案模板。
创建新的 YAML 构建管道:
在 YAML 文件中定义步骤。这是一个管道配置示例(这也是一个演示,您这边可能有点不同):
trigger:
branches:
include:
- main
pool:
vmImage: 'windows-latest'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
- task: MSBuild@1
inputs:
solution: '**/*.sln'
msbuildArguments: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"'
- task: NuGetCommand@2
inputs:
command: 'pack'
packagesToPack: '**/*.nuspec'
packDestination: '$(Build.ArtifactStagingDirectory)'
- task: NuGetCommand@2
inputs:
command: 'push'
packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg'
nuGetFeedType: 'internal'
publishVstsFeed: 'YourFeedId'
此管道安装 NuGet、恢复依赖项、构建解决方案、使用
.nuspec
文件将模板打包到 NuGet 包中,然后将其推送到 Azure Artifacts 源。
配置管道后,提交更改以触发构建(或从 Azure DevOps 手动运行)。检查管道日志以确保每个步骤成功完成并且您的包已推送到 NuGet feed。
将包发布到 NuGet 源后,您可以在 Visual Studio 中或通过
dotnet new
命令安装和使用该模板,具体取决于您的设置和首选项。确保配置您的 NuGet 源以包含您的 Azure Artifacts feed。
为了让大家更清楚的了解,这里分享一些相关的官方文档给大家: