【问题标题】:Azure Devops build fails Warning MSB3245: Could not resolve this referenceAzure Devops 构建失败警告 MSB3245:无法解析此引用
【发布时间】:2019-04-14 01:12:15
【问题描述】:

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

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

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

  1. ABC是实际应用

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

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

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

  2. 在 ABC.UnitTests proj 中添加对 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. 创建管道 => 构建成功。

【问题讨论】:

  • 这就是我在 MSTest 项目的 .csproj 中引用主项目的方式 ..\ABC\bin\Debug\netcoreapp2.1 \ABC.dll
  • 你不应该像这样引用 DLL。相反,您应该直接引用该项目,例如 this
  • 是的,就是这样。非常感谢您的帮助,我被困了很久。
  • 我已将我的评论扩展为答案,请接受。这样它也可以帮助其他人

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


【解决方案1】:

您不应引用评论中提到的任何 DLL。

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

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

你可以参考这个SO

【讨论】:

    猜你喜欢
    • 2013-02-04
    • 1970-01-01
    • 2022-12-14
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2016-06-18
    相关资源
    最近更新 更多