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

如何在Azure DevOps Pipelines中创建含项目依赖的NuGet包?

解决单个NuGet包打包多项目依赖的问题

针对你遇到的打包后无DLL的问题,从路径配置和Pipeline任务两个核心环节调整即可解决:

一、修正Dotnet Build任务的输出配置

默认dotnet build会把DLL输出到每个项目的bin/[配置]目录,你需要统一输出到指定目录,方便后续打包引用:

  1. 在Build任务的参数中添加:
    --configuration Release --output $(build.artifactstagingdirectory)/build-output
    
  2. 确保项目路径覆盖所有需要打包的项目(比如你的Library、ProjA、ProjB等),路径示例:**/CompanyName.Library.*.csproj或**/Proj[A-D].csproj

二、调整Nuspec的文件匹配规则

你当前的src路径存在绝对路径错误、通配符格式问题,修正后的files节点如下:

<files>
  <!-- 匹配build-output目录下主项目的DLL -->
  <file src="build-output/CompanyName.Library.*.dll" target="lib/net6.0" />
  <!-- 匹配所有依赖项目(ProjA/B/C/D)的DLL -->
  <file src="build-output/Proj*.dll" target="lib/net6.0" />
  <!-- 可选:包含调试符号PDB文件 -->
  <file src="build-output/CompanyName.Library.*.pdb" target="lib/net6.0" />
  <file src="build-output/Proj*.pdb" target="lib/net6.0" />
</files>

三、优化Dotnet Pack任务参数

因为已经提前完成构建,打包时需要指定依赖文件的基础路径:

  1. 勾选不构建选项
  2. 在参数中添加:
    --base-path $(build.artifactstagingdirectory) --configuration Release --output $(build.artifactstagingdirectory)/nuget-packages
    
    • --base-path告诉NuGet去哪里找nuspec中src指定的文件
    • --output指定生成的nupkg包存放目录,方便后续Push任务引用

四、额外验证步骤(可选)

如果还是出现问题,在Pack任务前添加一个PowerShell任务,执行以下命令确认DLL是否生成在指定目录:

Get-ChildItem $(build.artifactstagingdirectory)/build-output -Filter *.dll

关键注意事项

  • 所有需要打包的项目必须是项目引用(ProjectReference),而非NuGet包引用,否则Build环节不会生成对应的DLL
  • 确保所有项目的目标框架与nuspec中target路径的net6.0一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:15:07