【问题标题】:TFS Build 2013 - Cannot resolve primary referenceTFS Build 2013 - 无法解析主要参考
【发布时间】:2015-04-24 16:42:25
【问题描述】:

我正在评估 TFS Build 2013 在企业环境中的使用。 TFs 本身多年来一直运行良好,今天我设置了 Build 组件。目前没问题。

我从源代码中获取了一个相当简单的项目,并使用标准默认值创建了一个手动触发的构建定义。

我运行了一个测试版本,并通过主要参考立即遇到了问题。日志中的错误是:

C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(1697,5):警告 MSB3245:无法解析此引用。找不到程序集“XYZ.dll”。

关于我们如何存储和使用引用的背景知识: 我们为解决方案创建一个根文件夹,其中包含正常的项目的 .sln 文件和子目录。然后,我们在此级别添加一个“References”文件夹,其中包含项目所需的所有 DLL。这些通常是来自其他内部代码库的 DLL,但也有某些第三方库(例如旧的 Enterprise Library DLL,以及我们无法从 NuGet 获得的任何其他内容)。

需要这些 DLL 的每个项目都引用此文件夹(通过检查 .proj 文件,我可以看到链接存储为“..\References\XYZ.dll”等。这适用于本地构建,没有人曾经遇到过问题。参考文件夹被检入到 TFS 中,每个人都会得到一份副本。根据我通过尝试诊断我们的问题所阅读的内容,这是管理参考的一种相当普遍且被接受的方式。

所以,我收到的构建错误如上。基本上说构建目标无法从 References 文件夹中找到 DLL。日志继续列出它试图找到的所有地方。

至关重要(看起来)第一行是:

对于搜索路径“{HintPathFromItem}”。 被认为是“..\References\XYZ.dll”,但它并不存在。

此外,它还在 Framework 文件夹、各种默认程序集文件夹、GAC 等中查找,但其中没有一个(当然)包含它。

所以我想知道我哪里出错了。我是否错误地配置了其中一个构建/删除位置?引用所需的 DLL 是否有其他约定(请记住,我们整个公司都使用“..\References”文件夹设置,或者还有其他什么?

我对 TFS Build 还很陌生,但我对 TFS 或 Visual Studio 并不陌生 本身。我花了大约一个小时左右的时间在谷歌上搜索,但没有发现任何人遇到与我相同的问题,因此我们将不胜感激。

谢谢

更新:

构建代理配置如下:

Build Agent-工作目录:

D:\BuildAgent\$(BuildAgentId)\$(BuildDefinitionPath)

构建定义“源设置”具有(我假设)默认值:

状态:活动 |源代码管理文件夹:$/ProjectRoot |构建代理文件夹:$(SourceDir)

状态:隐形 |源代码管理文件夹:$/ProjectRoot/Drops |构建代理文件夹:

这里没有明确配置references文件夹,但是当我查看构建代理的工作目录时,我可以看到它:

D:\BuildAgent\1\ClientName\SolutionName\src\Dev\Evolution\Source\SolutionName.Solution\References

如果我打开 VS2013 命令提示符,导航到包含 .sln 文件的文件夹(以及 References 文件夹)并运行“msbuild d:\path\to\Solution.sln”,然后它会成功构建而没有警告或错误。

【问题讨论】:

  • 要检查的东西:* 构建定义源映射是否包括References 文件夹? * xyz.dll 是否真的到达了构建代理? * TFS 构建基本上在解决方案上运行MSBuild。尝试从Developer Command Prompt for Visual Studio 在本地运行它,看看你是否得到同样的错误。
  • @Jonathan 感谢您的回复,我已经相应地更新了问题

标签: visual-studio-2013 tfsbuild


【解决方案1】:

事实证明这根本不是 TFS 的故障...

有问题的 DLL 虽然存在于 References 文件夹中,但实际上并未检入 TFS。

右键单击 VS 中的 References 文件夹(添加为“解决方案文件夹”)并选择添加现有项目,然后签入解决了问题。

所以 References 文件夹的使用方式与您所期望的一样,与 VS 使用它的方式相同。 MSBuild 在本地工作,因为我的本地文件夹中有该文件,但因为它不是解决方案的一部分,所以它不与源的其余部分一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    相关资源
    最近更新 更多