visual-studio-2013 - TFS Build 2013 - 无法解析主要引用

标签 visual-studio-2013 tfsbuild

我正在评估 TFS Build 2013 在企业环境中的使用情况。 TF 本身已经运行良好多年,今天我设置了构建组件。到目前为止没问题。

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

我运行了一个测试版本并使用主要引用直接解决了一个问题。日志中的错误是:

C:\Program Files (x86)\MSBuild\12.0\bin\amd64\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "XYZ.dll".

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

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

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

最重要的是(看起来)第一行是:

For SearchPath "{HintPathFromItem}". Considered "..\References\XYZ.dll", but it didn't exist.

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

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

我是 TFS Build 的新手,但我绝不是 TFS 或 Visual Studio 的新手 本身。我花了大约一个小时左右的时间进行谷歌搜索,但没有发现任何人遇到与我相同的问题,因此非常感谢任何帮助。

谢谢

更新:

构建代理配置如下:

Build Agent- 工作目录:

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

构建定义“Source Settings”具有(我假设的)默认值:

Status: Active | Source Control Folder: $/ProjectRoot | Build Agent Folder: $(SourceDir)

Status: Cloaked | Source Control Folder: $/ProjectRoot/Drops | Build Agent Folder:

这里没有明确配置引用文件夹,但是当我查看 Build Agent 的工作目录时,我可以看到它:

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

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

最佳答案

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

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

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

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

关于visual-studio-2013 - TFS Build 2013 - 无法解析主要引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28672419/

相关文章:

c++ - 为什么重写类的指针使用基类的 operator== 和 operator!=

cross-platform - 将 Windows 和 Linux 组合在一个构建中 : No agent could be found with the following capabilities: sh, DotNetFramework

tfs - 如何获取 TfvcTemplate.12.xaml 中的内部版本号

git - checkin TFVC Team Projects 会触发 Git Team Project 中的构建

visual-studio-2012 - 构建 checkin 策略与私有(private)门禁 checkin

sql-server - “ View ”>“服务器资源管理器”与“ View ”>“SQL Server 对象资源管理器”的典型用法是什么?

visual-studio-2013 - Visual Studio 中的链接库,为什么有两种不同的方式?

c++ - 根据创建日期对文件进行排序?

.net - 使用相对路径的后期生成事件在 VS 2013 中不起作用

nunit - 自定义逻辑运行后无法使 TFS 构建失败