Azure Devops构建失败警告MSB3245:无法解决此引用

时间:2018-11-10 20:28:59

标签: visual-studio azure visual-studio-2017 azure-devops

我正在尝试在Azure DevOps中创建管道,但由于缺少引用而导致编译错误:

  

[警告] C:\ Program Files(x86)\ Microsoft Visual   Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets(2110,5):   警告MSB3245:无法解析此引用。找不到   程序集“ ABC”。检查以确保程序集在磁盘上。如果   该引用是您的代码所必需的,您可能会进行编译   错误。

我有一个包含两个项目的VS2017解决方案。

  1. ABC是实际应用

  2. ABC.UnitTests,我在其中添加了一些单元测试(我正在使用MSTest)

当我在本地构建解决方案时,我可以通过以下步骤成功构建:

  1. 构建ABC项目=>生成ABC.dll

  2. 在ABC.UnitTests项目中将引用添加到ABC.dll

  3. 构建整个解决方案=>构建成功

ABC.UnitTests中的.cs文件以这种方式引用该应用程序,并生成上面的警告:

using ABC; 

如果我执行一个干净的构建,其中删除了ABC.dll,然后对整个解决方案进行了构建,则会收到相同的MSB3245警告。因此,如果该dll不存在,则该问题在本地可重现。

然后,当我将解决方案上传到Azure DevOps时,请执行以下步骤。

  1. 从本地VS2017上传解决方案,并在Azure中创建一个项目
  2. 在Azure DevOps中构建项目=>已报告参考问题

我有一个名称为azure-pipelines.yml的YAML配置文件,该文件引用了托管的2017年代理。

pool: vmImage: 'vs2017-win2016' 

替代流程:

  1. 从本地VS2017上传解决方案,并在Azure中创建一个项目
  2. 从sln文件中注释对ABC.UnitTests项目的引用
  3. 创建管道=>构建成功。

1 个答案:

答案 0 :(得分:2)

您不应引用注释中提到的任何DLL。

正确的方法是将其称为项目。这样,DLL在构建过程中会自行处理

正确的方法是 References->(右键单击)Add References->使用Projects tab,您可以选择生成DLL(程序集)的项目

您可以参考此SO