相关疑难解决方法(0)

如何强制从代码覆盖范围中排除某些程序集?

我试图通过使用runsettings文件来限制在TFS中的代码覆盖率过程中分析的程序集,但是即使我明确地将它们排除在外,一些程序集也坚持要进行分析.

这是我目前的runsettings文件内容:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Configurations for data collectors -->
  <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>
              <Include>
                <ModulePath>.*Cloud4Mobile.*</ModulePath>
              </Include>
              <Exclude>
                <ModulePath>.*Tests.dll$</ModulePath>
                <ModulePath>.*TestUtilities.dll$</ModulePath>
              </Exclude>
            </ModulePaths>
            <CompanyNames>
              <Include>.*Mobiltec.*</Include>
            </CompanyNames>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>
Run Code Online (Sandbox Code Playgroud)

但是,当我从Visual Studio运行代码覆盖率来测试此文件时,分析仍然显示其他与我的过滤器不匹配的程序集,如AutoMapper和CacheManager:

在此输入图像描述

请注意,默认情况下,我的设置已经排除了这些程序集,但即使这样,我也尝试明确地将它们排除在无效之外,如下所示:

<Exclude>
  <ModulePath>^AutoMapper.dll$</ModulePath>
  ...
</Exclude>
Run Code Online (Sandbox Code Playgroud)

我尝试了正则表达式的所有变体,从限制较少(使用.*)到限制性最强(如该示例).这些程序集污染了我在TFS构建摘要中获得的报告,我想将它们从分析中删除.这是我从TFS获得的完整输出,这显然是无用的:

在此输入图像描述

我设法使用此.runsettings配置文件删除了大部分内容,但是如何确保这些异常值也不会显示在那里?为什么他们甚至首先显示,考虑到它们与我的包含过滤器完全匹配?

code-coverage tfsbuild visual-studio runsettings

6
推荐指数
1
解决办法
1308
查看次数