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

如何在Azure DevOps中配置.NET ADX COM加载项构建部署流水线

.NET ADX COM加载项Azure DevOps构建流水线指南

问题1:如何确保Add-in Express在Azure DevOps构建代理上可用?

Azure DevOps的windows-latest托管代理默认不会预装Add-in Express(ADX),有两种可靠方案:

  • NuGet包管理(推荐):ADX官方提供NuGet包,将项目依赖从本地DLL引用切换为NuGet包,构建时通过NuGet Restore自动下载到代理机器。
  • 手动部署依赖:若必须使用本地DLL,将ADX核心DLL上传至Azure DevOps工件库(如Universal Packages),流水线中添加下载步骤将DLL拉取到代理指定目录;或把DLL纳入代码仓库(不推荐,易引发版本冲突和仓库体积膨胀)。

问题2:将Add-in Express依赖项纳入构建流水线的正确步骤

方案A:使用NuGet包(优先选择)

  1. 本地项目改造:移除对ADX本地DLL的引用,通过NuGet包管理器安装对应ADX包(如AddinExpress.MSO对应Office通用加载项,AddinExpress.OL对应Outlook加载项)。
  2. 提交配置:确保项目的PackageReference(推荐)或packages.config已正确记录ADX包依赖,将配置文件提交至代码仓库。
  3. 流水线配置:保留NuGetCommand@2的restore步骤,若ADX包来自私有NuGet源,需在该任务中指定vstsFeed参数指向你的私有源。

方案B:手动部署DLL

  1. 上传DLL到工件库:将ADX核心DLL(如AddinExpress.MSO.2005.dll、AddinExpress.OL.2005.dll)上传至Azure DevOps的Universal Packages。
  2. 流水线下载依赖:添加UniversalPackages@0任务,将DLL下载至代理的$(Build.SourcesDirectory)\Dependencies目录。
  3. 配置项目引用路径:修改项目文件的HintPath指向下载的DLL路径,或在VSBuild任务中通过msbuildArgs指定引用路径参数。

问题3:ADX COM加载项构建流水线推荐方案与最佳实践

  • 优先用NuGet管理依赖:避免手动维护DLL,减少版本冲突和流水线维护成本。
  • 使用PackageReference:替代传统的packages.config,适配现代.NET项目的依赖管理逻辑,提升restore效率。
  • 验证依赖完整性:在构建前添加NuGetCommand@2的restore步骤,并可添加脚本验证依赖是否下载完成。
  • 构建后处理COM注册:若需注册加载项,可使用ADX自带的adxregistrator.exe工具,在流水线的发布阶段执行(注意托管代理的权限限制,必要时使用自托管代理)。
  • 保留构建日志:开启流水线日志详细模式,便于排查依赖缺失或构建失败问题。

完整流水线YAML示例(NuGet方案)

trigger:
  - feature/my-branch

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: UseDotNet@2
  inputs:
    packageType: 'sdk'
    version: '5.0.x'

- task: NuGetToolInstaller@1
  inputs:
    versionSpec: '>=6.0.0' # 使用较新版本的NuGet,确保兼容ADX包
  displayName: 'Install NuGet Tool'

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'
    feedsToUse: 'select'
    vstsFeed: 'your-adx-nuget-feed' # 替换为你的ADX NuGet源名称/URL
  displayName: 'Restore NuGet Dependencies'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    msbuildArgs: '/p:OutDir=$(Build.ArtifactStagingDirectory) /p:DeployOnBuild=true'
  displayName: 'Build ADX Add-in'

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    testAssemblyVer2: '**\*Tests.dll'
    searchFolder: '$(System.DefaultWorkingDirectory)'
  displayName: 'Run Unit Tests'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'ADX-Addin-Build'
    publishLocation: 'Container'
  displayName: 'Publish Build Artifacts'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:15:59