文档首页> 编译构建 CloudBuild> 常见问题> Msbuild构建> 找不到程序集(**.dll)
更新时间:2022-04-29 GMT+08:00
分享

找不到程序集(**.dll)

问题现象

构建告警:

  • warning MSB3245: 未能解析此引用。
  • 未能找到程序集“Microsoft.Office.Interop.Word, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL”。请检查磁盘上是否存在该程序集。
  • 如果您的代码需要此引用,则可能出现编译错误。

原因分析

  • 由提示信息可知,解决方案中引入了程序集“Microsoft.Office.Interop.Word”,但构建时环境中不具备此程序集,导致编译告警,如果项目代码中使用了此引用,甚至会直接导致失败。
  • 通常情况下,此类程序集默认安装于本地系统,无需指定程序集位置,VS构建时会从默认配置的几个程序集路径查找,可以构建成功;而云端构建环境对应目录无此程序集,进而导致本地与云端构建不一致。
  • 为解决此类场景,Msbuild集成了NuGet,可以在构建时从远程仓库下载对应程序集,此时只需于项目中指定“packages.config”,并于其中声明依赖的程序集即可。
  • 特殊情况下,项目引用的程序集可能无法在远程仓库找到,此时需要手工保存程序集至代码仓库中,并显示指定程序集路径。

处理方法1:使用NuGet管理依赖(VS版)

如果在本地使用VS构建,遇到此问题时,可以直接使用VS > 管理NuGet程序包功能,操作步骤如下:

  1. 使用VS打开项目,选中解决方案>管理NuGet程序包

  2. “浏览”页签中搜索需要的程序集。

  3. 选择需要的程序集,单击“安装”,并在弹出的提示框单击“确认”

  4. 提交更改后的代码,再次构建即可解决此问题。

处理方法2:使用NuGet管理依赖(手工修改)

如果本地没有VS集成工具,可手工修改解决方案文件实现用NuGet管理依赖,操作步骤如下:

  1. 修改“csproj”文件中的依赖项,增加<HintPath>项。

  2. 在csproj文件同级目录新增packages.config文件,如已存在新增依赖信息即可。

  3. 在csproj文件中引入packages.config文件,如已有配置跳过即可。

  4. 提交修改后的代码,重新构建即可解决此问题。

处理方法3:从项目中引入程序集

部分场景下,需要从引入项目中的程序集,操作步骤如下:

  1. 拷贝已有程序集到项目下,一般在根目录建立packages文件夹存放程序集。

  2. 在csproj文件中引入程序集,并指定程序集地址。

  3. 提交更改后的代码、程序集,重新构建即可解决问题。

  

分享:

Msbuild构建 所有常见问题

more