在Team Build 2008上构建.NET 4应用程序时缺少代码覆盖率

时间:2010-08-12 02:44:46

标签: visual-studio-2010 testing tfs tfs2008 team-build

我正在安装了VS2010 Ultimate的TFS2008构建代理上构建VS2010解决方案;代码编译得很好,测试都运行良好,但是当涉及代码覆盖时,没有任何报告。我已经检查过.testsettings文件是否启用了代码覆盖率,并且我选择了一些程序集进行检测,如果我在开发人员PC上本地运行测试,则会对代码覆盖率进行分析并成功报告。

但是,在构建服务器上构建时,不会报告代码覆盖率。我可以看到一个data.coverage文件位于构建的TestResults \ guid \ In \ MachineName文件夹中,所以它显然已经做了一些事情,但构建日志中没有提及任何与代码覆盖有关的事情,也没有警告/错误。

更新:检查TFS服务器本身,应用程序日志包含以下错误:

代码覆盖率分析服务无法分析构建Daily Build> 20100812.2(任何CPU / DEBUG)的代码覆盖率数据。这通常是由于将特定二进制文件的不同版本发布到特定版本而引起的。 从运行svcTFSService处理代码覆盖率数据@ W2411193 2010-08-12 12:52:34_任何CPU_Debug都会引发以下异常: 创建覆盖信息时出错:加载符号文件时出错。符号和二进制文件应与coverage文件或符号路径位于同一文件夹中:D:\ Source \ CommonPlatform \ Common Platform Development Daily Build \ Binaries \ Debug \ Core.dll。

然而,当我查看指定文件夹中的构建代理程序时,程序集及其调试符号文件都位于预期的位置。

更新2:一时兴起,我尝试在构建代理上打开我在VS 2010中提到的data.coverage文件,我收到以下错误:

代码覆盖率分析引擎抛出异常:无法找到图像文件“D:\ Source \ CommonPlatform \ Common Platform Development Daily Build \ Binaries \ Debug \ Core.dll”。 < / p>

然而,我可以清楚地看到文件系统中的文件以及它的PDB。

2 个答案:

答案 0 :(得分:3)

使用TFS 2008和.Net 4代码无法进行代码覆盖。您必须升级到tfs 2010。 http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/39aaaf43-0e3a-41c7-8b72-c1cabc9438e1/

答案 1 :(得分:0)

检查符号文件和程序集上的文件时间戳是否基本相同。它们不应超过一秒钟(或最多两个)。如果是,则可能是您在多个位置构建Core.dll,并且只有一个正在创建符号文件。

这可能是一个长镜头,但它可能是一个很好的起点。