在Azure DevOps Pipeline编译时引用Interop.Redemption.dll的可行方案
Azure DevOps Pipeline编译Interop.Redemption.dll引用问题的解决办法
1. 改用官方Redemption NuGet包管理依赖
放弃手动引入本地DLL,直接通过NuGet管理:
- 本地项目中移除现有Interop.Redemption.dll引用,通过NuGet包管理器安装官方
Redemption包,版本和本地运行环境保持一致 - 确认项目文件里的引用是NuGet自动生成的配置,而非硬编码的本地DLL路径
- Pipeline里添加
NuGet Restore任务,确保编译前自动拉取所有依赖包
2. 修正本地DLL引用的属性配置
如果一定要用仓库里的DLL,检查以下配置:
- 选中项目里的Interop.Redemption.dll引用,设置
复制到输出目录为始终复制,嵌入互操作类型设为True——嵌入类型会把互操作信息打包进程序集,不用依赖外部注册 - 确保项目文件里的DLL路径是相对路径,比如:
<Reference Include="Redemption"> <HintPath>..\lib\Interop.Redemption.dll</HintPath> <EmbedInteropTypes>True</EmbedInteropTypes> </Reference> - Pipeline里加个
复制文件任务,把仓库中的DLL复制到编译时能识别的路径,比如项目的依赖目录
3. 在代理机器上注册Redemption DLL
如果不能嵌入互操作类型,必须注册DLL:
- 在Pipeline中添加
PowerShell任务,执行注册命令(注意任务要以管理员权限运行):regsvr32 /s "$(Build.SourcesDirectory)\your-path\Interop.Redemption.dll"
4. 对齐编译环境与本地的一致性
- 确认Azure DevOps代理用的.NET框架、Visual Studio版本和本地完全一致,比如本地用VS2022,Pipeline就选对应版本的
VSBuild任务 - 代理机器要安装和本地同版本的Redemption组件——Office安装不包含Redemption的注册信息,得单独装
内容的提问来源于stack exchange,提问作者Kaster
相关产品推荐
相关产品推荐

