如何在Azure Pipelines构建依赖Office Interop的Windows Forms应用
解决方案
- 第一步:修改Office Interop NuGet包的配置,显式开启嵌入互操作类型
你之前的COM引用已经配置了EmbedInteropTypes=true,换成PackageReference后默认不会继承该配置,需要手动补充属性:
<PackageReference Include="Microsoft.Office.Interop.Word" Version="15.0.4797.1003"> <EmbedInteropTypes>True</EmbedInteropTypes> </PackageReference>
开启后,编译器会把你代码用到的所有互操作类型直接嵌入到生成的程序集中,不会再依赖独立的Interop dll,即可解决System.IO.FileNotFoundException的报错。
- 第二步:补充Microsoft.Office.Core的依赖引用
你需要的Microsoft.Office.Core.dll对应NuGet包为Microsoft.Office.Core,选择和你Word Interop匹配的15.x版本添加即可,同样开启嵌入互操作类型:
<PackageReference Include="Microsoft.Office.Core" Version="15.0.4420.1017"> <EmbedInteropTypes>True</EmbedInteropTypes> </PackageReference>
- 第三步:验证Azure构建适配性
完成以上配置后,构建过程不需要依赖机器上安装的Office组件,Azure Pipelines的默认Windows构建代理即可完成构建,无需将本地dll签入源码管理。
注意:程序运行时仍要求运行环境安装对应版本的Office,该要求和引用方式无关,是Office COM互操作的固有特性。
内容的提问来源于stack exchange,提问作者phil
相关产品推荐
相关产品推荐

