TFS Build 2013-无法解析主引用



我正在评估TFS Build 2013,以便在公司环境中使用。TF本身运行良好已有很长时间了,今天我设置了Build组件。到目前为止没有问题。

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

我运行了一个测试构建,并用一个主要引用直接解决了一个问题。日志中的错误为:

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

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

每个需要这些dll的项目都引用了这个文件夹(通过检查.proj文件,我可以看到链接存储为"..\References\XYZ.dll"等。这适用于本地构建,而且从来没有人遇到过问题。引用文件夹被签入TFS,每个人都会得到一份副本。从我试图诊断我们的问题所读到的内容来看,这是一种相当常见和可接受的管理引用的方法。

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

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

对于SearchPath"{HintPathFromItem}"。考虑了"..\References\XYZ.dll",但它并不存在。

此外,它还会在Framework文件夹、各种默认程序集文件夹、GAC等中查找,当然,这些文件夹都不包含它

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

我是TFS Build的新手,但我对TFS或Visual Studio并不陌生它本身我花了大约一个小时的时间在谷歌上搜索,没有发现任何人和我有同样的问题,所以如果有任何帮助,我将不胜感激。

感谢

更新:

构建代理配置如下:

构建代理-工作目录:

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

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

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

状态:已屏蔽|源代码管理文件夹:$/ProjectRoot/Drops|生成代理文件夹:

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

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

如果我打开VS2013命令提示符,导航到包含.sln文件的文件夹(以及References文件夹),并运行"msbuild d:\path\to\Solution.sln",则它将成功生成,没有任何警告或错误。

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

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

右键单击VS中的References文件夹(添加为"Solution folder")并选择Add Existing Item,然后签入修复了该问题。

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

相关内容

最新更新