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

Azure Pipelines填充.NET Framework类库NuGet包特定字段的疑问

解决NuGet包Release Notes、Summary、Owners字段填充问题

针对.NET Framework 4.6.1类库在Azure Pipelines打包NuGet时,无法通过现有AssemblyInfo映射填充上述三个字段的问题,提供三种可行方案:

方案1:直接使用NuSpec文件配置

创建或修改项目对应的.nuspec文件,手动定义这三个字段的内容,Azure Pipelines的NuGet Pack任务会自动读取该文件配置。

示例nuspec核心内容:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <!-- 其他已映射字段可保留AssemblyInfo自动填充,也可手动覆盖 -->
    <summary>你的类库简短描述</summary>
    <releaseNotes>本次版本更新:修复XX问题,新增XX功能</releaseNotes>
    <owners>你的团队/个人名称</owners>
  </metadata>
</package>

在Azure Pipelines的NuGet Pack任务中,将Path to csproj or nuspec file(s) to pack指向该nuspec文件即可。

方案2:通过Azure Pipelines任务参数动态传递

在NuGet Pack任务的Arguments输入框中,使用NuGet命令行参数直接指定字段值,支持用构建变量实现动态填充。

示例参数配置:

-Properties ReleaseNotes="$(ReleaseNotes)";Summary="$(PackageSummary)";Owners="$(PackageOwners)"

其中$(ReleaseNotes)、$(PackageSummary)、$(PackageOwners)是提前在Azure Pipelines中定义的构建变量,可根据不同构建场景设置对应值。

方案3:自定义AssemblyMetadata属性+脚本提取

在AssemblyInfo.cs中添加自定义元数据属性存储内容,再通过脚本提取后传递给NuGet Pack任务。

  1. 修改AssemblyInfo.cs,添加自定义元数据:
[assembly: AssemblyMetadata("PackageSummary", "类库的简短概述")]
[assembly: AssemblyMetadata("PackageReleaseNotes", "v1.0.0:初始版本发布")]
[assembly: AssemblyMetadata("PackageOwners", "开发团队A")]
  1. 在Azure Pipelines中添加PowerShell任务,提取元数据并设置为构建变量:
# 读取AssemblyInfo.cs内容
$assemblyInfoContent = Get-Content -Path "$(Build.SourcesDirectory)/YourProject/Properties/AssemblyInfo.cs" -Raw

# 提取各元数据字段
$summary = [regex]::Match($assemblyInfoContent, 'AssemblyMetadata\("PackageSummary", "(.*?)"\)').Groups[1].Value
$releaseNotes = [regex]::Match($assemblyInfoContent, 'AssemblyMetadata\("PackageReleaseNotes", "(.*?)"\)').Groups[1].Value
$owners = [regex]::Match($assemblyInfoContent, 'AssemblyMetadata\("PackageOwners", "(.*?)"\)').Groups[1].Value

# 设置为构建变量供后续任务使用
Write-Host "##vso[task.setvariable variable=PackageSummary]$summary"
Write-Host "##vso[task.setvariable variable=PackageReleaseNotes]$releaseNotes"
Write-Host "##vso[task.setvariable variable=PackageOwners]$owners"
  1. 在NuGet Pack任务的Arguments中引用变量:
-Properties Summary="$(PackageSummary)";ReleaseNotes="$(PackageReleaseNotes)";Owners="$(PackageOwners)"

内容的提问来源于stack exchange,提问作者Conor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:50:40