Azure DevOps不同作业间无法访问前置生成DLL问题求助
关于Azure DevOps多作业构建的文件共享与顺序配置问题
1. 作业隔离的确认
是的,Azure DevOps中每个作业都是完全隔离的——它们运行在独立的代理机器(或容器)实例上,默认不共享任何文件系统资源。这就是Solution1作业生成的DLL无法被Solution2作业直接访问的核心原因。
2. 跨作业共享文件的解决方案
要让后续作业访问前序作业的构建产物,需要通过管道工件来传递,具体配置如下:
- 在生成产物的作业(如Solution1_build)末尾添加发布工件任务:
- task: PublishBuildArtifacts@1 displayName: 'Publish Solution1 DLLs' inputs: pathtoPublish: '$(your-dll-output-folder)' # 替换为你的DLL实际输出路径 artifactName: 'Solution1BuildOutputs' publishLocation: 'Container' - 在需要依赖的作业(如Solution2_build)开头添加下载工件任务:
下载完成后,Solution2作业即可从指定的- task: DownloadBuildArtifacts@0 displayName: 'Download Solution1 DLLs' inputs: buildType: 'current' downloadType: 'single' artifactName: 'Solution1BuildOutputs' downloadPath: '$(System.DefaultWorkingDirectory)/Solution1Dependencies'downloadPath路径访问Solution1的DLL文件。
3. 单个作业内配置解决方案构建顺序
如果不需要拆分多个作业,可直接在单个作业内按顺序排列多个构建步骤——作业内的步骤严格按定义顺序依次执行,且共享同一代理的文件系统,无需额外配置就能访问前序步骤的产物。示例配置:
- job: 'Ordered_Solutions_Build' displayName: 'Build all solutions in sequence' steps: - task: DotNetCoreCLI@2 displayName: 'Build Solution1' inputs: command: 'build' arguments: '--configuration $(buildConfiguration) -p:FileVersion=$(fileVersion) -p:Version=$(version)' projects: '$(solution1Path)\Solution1.sln' # 可选:如需将DLL复制到指定文件夹,可在此添加复制任务 - task: DotNetCoreCLI@2 displayName: 'Build Solution2' inputs: command: 'build' arguments: '--configuration $(buildConfiguration) -p:FileVersion=$(fileVersion) -p:Version=$(version)' projects: '$(solution2Path)\Solution2.sln' # 后续的测试任务等
内容的提问来源于stack exchange,提问作者owczarek
相关产品推荐
相关产品推荐

