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

Azure Pipeline使用DotNetCoreCLI@2打包时如何将oldcode.dll纳入NuGet包

解决方案

最简方案(无需修改流水线/新增nuspec文件)

直接修改你的ProjectName.csproj文件,添加文件打包配置即可实现和原有.NET Framework版本一致的打包结构,无需调整现有流水线的pack任务配置:

  1. 先将oldcode.dll以及原有project.targets放到项目目录下,比如存放在项目根目录的native文件夹内
  2. 在csproj文件中添加如下ItemGroup配置:
<ItemGroup>
  <!-- 将oldcode.dll打包到NuGet包的build目录下 -->
  <None Include="native\oldcode.dll" Pack="true" PackagePath="build\oldcode.dll" />
  <!-- 将targets文件一并打包到build目录下 -->
  <None Include="native\project.targets" Pack="true" PackagePath="build\project.targets" />
</ItemGroup>

配置完成后直接运行原有的DotNetCoreCLI@2 pack任务即可生成符合预期结构的NuGet包。


其他问题解答

1. 是否可以在push前手动复制dll到NuGet包内

可以但不推荐。NuGet包本质是zip压缩包,你可以在pack任务执行完成后,解压生成的.nupkg文件,将oldcode.dll放到对应目录后重新压缩改回后缀。但需要注意手动修改包内容后需要同步更新包内.nuspec文件的文件哈希校验值,否则会出现NuGet校验失败的问题,维护成本远高于直接修改csproj的方案。

2. nuspec相关配置问题

你之前的自定义任务配置有误,dotnet pack的命令参数需要放在arguments字段而不是custom字段,正确配置如下:

- task: DotNetCoreCLI@2
  inputs:
    command: 'custom'
    custom: 'pack'
    arguments: '**/NameOfFile.nuspec'

官方给出的「基于csproj指定nuspec文件打包」的方案是适用的,但需要额外维护独立的nuspec文件,维护成本高于直接修改csproj属性的方案,无特殊需求不需要采用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:54:02