【发布时间】: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 解决方案。
ABC是实际应用
我在 ABC.UnitTests 中添加了一些单元测试(我正在使用 MSTest)
当我在本地构建解决方案时,我可以通过以下步骤成功构建:
构建 ABC 项目 => 生成 ABC.dll
在 ABC.UnitTests proj 中添加对 ABC.dll 的引用
构建整个解决方案 => 构建成功
ABC.UnitTests 中的 .cs 文件以这种方式引用应用程序,并生成上述警告:
using ABC;
如果我在删除 ABC.dll 的地方进行干净构建,然后构建整个解决方案,我会收到相同的 MSB3245 警告。因此,如果 dll 不存在,则该问题可以在本地重现。
然后,当我将解决方案上传到 Azure DevOps 时,我会执行以下步骤。
- 从本地 VS2017 上传解决方案,在 Azure 中创建项目
- 在 Azure DevOps 中构建项目 => 报告参考问题
我有一个名为 azure-pipelines.yml 的 YAML 配置文件,它引用了托管的 2017 代理。
pool: vmImage: 'vs2017-win2016'
备用流程:
- 从本地 VS2017 上传解决方案,在 Azure 中创建项目
- 注释掉 sln 文件中对 ABC.UnitTests 项目的引用
- 创建管道 => 构建成功。
【问题讨论】:
-
这就是我在 MSTest 项目的 .csproj 中引用主项目的方式
..\ABC\bin\Debug\netcoreapp2.1 \ABC.dll -
你不应该像这样引用 DLL。相反,您应该直接引用该项目,例如 this
-
是的,就是这样。非常感谢您的帮助,我被困了很久。
-
我已将我的评论扩展为答案,请接受。这样它也可以帮助其他人
标签: visual-studio azure visual-studio-2017 azure-devops