2016-04-26 63 views
1

我有一个在Visual Studio Team Services(以前称为Visual Studio Online)上运行的构建。我想从代码覆盖率计算中排除一些程序集。基于我已阅读的格式frommanysources。我创建了一个.runsettings文件,如下所示:从Visual Studio团队服务中排除代码覆盖的程序集

<?xml version="1.0" encoding="utf-8"?> 
<RunSettings> 
    <DataCollectionRunSettings> 
    <DataCollectors> 
     <DataCollector friendlyName="Code Coverage" 
      uri="datacollector://Microsoft/CodeCoverage/2.0" 
      assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 
     <Configuration> 
      <CodeCoverage> 
      <ModulePaths> 
       <Exclude> 
       <ModulePath>*AWSSDK*</ModulePath> 
       </Exclude> 
      </ModulePaths> 
      </CodeCoverage> 
     </Configuration> 
     </DataCollector> 
    </DataCollectors> 
    </DataCollectionRunSettings> 
</RunSettings> 

但是,这会产生以下错误:

开始测试执行,请稍候... 错误信息:System.InvalidOperationException:不能混用同步和异步操作在流程上。 在System.Diagnostics.Process.get_StandardError() 在Microsoft.VisualStudio.Coverage.Vanguard.Wait() 在Microsoft.VisualStudio.Coverage.Vanguard.Start(字符串outputName,DataCollectionContext上下文) 在Microsoft.VisualStudio.Coverage。 DynamicCoverageDataCollectorImpl.StartVanguard(DataCollectionContext上下文) 在Microsoft.VisualStudio.Coverage.UnitTestDataCollector.SessionStart(对象发件人,SessionStartEventArgs E) 在Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector.SessionStart(对象发件人,SessionStartEventArgs E) 在System.EventHandler`1 。调用(Object sender,TEventArgs e) at WEX.TestExecution.TaefDataCollectionEvents.OnSessionStart(SessionStartEventArgs e) at WEX.TestExecution.Dat aCollectorTestMode.Initialize(ITestModeSettings设置,ICallbackRegistrar callbackRegistrar) 信息:另外,如果测试发现者&执行程序作为vsix扩展安装在计算机上并且您的安装支持vsix扩展,您可以尝试指定'/ UseVsixExtensions'命令。示例:vstest.console.exe myTests.dll/UseVsixExtensions:true VSTest测试运行失败,退出代码为:1

是的,有些测试使用async/await。在Visual Studio 2015中,相同的.runsettings文件可以正常工作。如果按照建议操作,请添加以下选项:/UseVsixExtensions:true,结果相同。我怎样才能解决这个问题?

+1

并且您提供的runsettings文件不应该被发现。格式应该像“。* AWSSDK。*”。 –

+0

当你构建队列并共享整个日志时,你可以将“system.debug”变量设置为“true”吗? –

+0

令人惊讶的是,根据您的建议更改“ModulePath”的内容解决了问题。让我觉得'InvalidOperationException'是误导性的,甚至可能是一些不好的异常处理? [这里是日志](https://onedrive.live.com/redir?resid=47707C5E85187AB1!450&authkey=!AHgwV59SruF7j3Q&ithint=file%2czip)with system.debug = true对于ModulePath为'* AWSSDK *'(和失败)。 – Snixtor

回答

2

的runsettings文件,请使用以下的正则表达式则表达式匹配的文件:

Regular expressions Include and exclude nodes use regular expressions. For more information, see Using Regular Expressions in Visual Studio. Regular expressions are not the same as wildcards. In particular:

.* matches a string of any characters

. matches a dot ".")

() matches parentheses "()"

\ matches a file path delimiter "\"

^ matches the start of the string

$ matches the end of the string

有了您的原始路径,所有的文件将在路径中排除,因为你只有“*”。有关详细信息,请参阅此链接:Regular Expressions in Visual Studio

对于不好的例外,根据您提供的日志,您正在使用托管构建代理运行构建。我用Hosted Build Agent做了一个快速测试,可以重现这个问题。但是,当我尝试使用自己的构建代理时,不会发生此问题。我怀疑Hosted Build Agent上有一些设置/配置会导致此问题,并且我帮助您在Microsoft Connect Page上提交反馈。您可以查看以下链接进行跟踪:Invalid exception when run testing from Hosted Build Agent

+0

不错的一个埃迪。完美的解释,并立即创建一个错误报告,超越呼叫。 – Snixtor