【问题标题】:Azure DevOps "NuGet pack" task ignores/overwrites package metadataAzure DevOps“NuGet pack”任务忽略/覆盖包元数据
【发布时间】:2022-01-26 12:15:17
【问题描述】:

我在 Azure DevOps 中设置了一个简单的 CI 管道,用于构建 .NET5 NuGet 包,如下所示

管道能够按预期成功打包和发布项目,但是当我去检查NuGet包时,我发现所有包元数据都丢失了(版本除外,这是正确的,作者(s),它错误地将 ADO 构建代理的名称显示为作者)。我目前拥有位于 .csproj 文件中的所有包元数据。

显示不正确元数据的屏幕截图,当我查看管道生成的 NuGet 包中的 .nuspec 时,也会显示此内容。当然,当我在本地机器上打包项目时,所有元数据都会按照它应有的方式生成。

我见过one 其他类似的帖子,作者将管道切换为使用 dotnet 任务而不是 MSBuild 任务。不幸的是,这对我来说不是一个选项,因为这个项目有 dotnet CLI 不支持的 COM 引用,所以 MSBuild 是我唯一的选择。

有人知道为什么我的管道中的“NuGet pack”任务没有使用我的 .csproj 文件中的元数据吗?

【问题讨论】:

    标签: c# .net azure-devops nuget


    【解决方案1】:

    有人知道为什么我的管道中的“NuGet pack”任务没有使用我的 .csproj 文件中的元数据吗?

    根据文档Create a NuGet package using MSBuild

    创建包的命令msbuild -t:pack 在功能上是 相当于dotnet pack

    或者您可以在.csproj 文件中添加以下参数,这将在您使用 VS 构建任务构建项目时创建包:

    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    

    【讨论】:

    • 感谢您的建议,但我使用 NuGet pack 任务的主要原因是我可以使用管道变量自动设置包版本,而不是使用 .csproj 中的版本文件。如果 msbuild 正在生成包,有没有办法做到这一点?
    【解决方案2】:

    这个问题的解决方案最终变得有些简单。 “NuGet 包”任务使用 nuget.exe CLI,它会忽略 .csproj 文件中定义的元数据。您必须创建一个.nuspec file,将所有元数据放入其中,然后将该文件添加到 .csproj 文件所在的同一目录中。一旦我这样做了,我的 NuGet 包就生成了正确的元数据。

    【讨论】:

      猜你喜欢
      • 2021-04-11
      • 1970-01-01
      • 2022-08-24
      • 1970-01-01
      • 2019-03-20
      • 2015-06-21
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      相关资源
      最近更新 更多