【问题标题】:Getting an error running dotCover from Azure DevOps从 Azure DevOps 运行 dotCover 时出错
【发布时间】:2020-01-31 15:59:11
【问题描述】:

我正在尝试向 Azure DevOps 中的构建管道添加一个任务,以使用 dotCover 命令行工具计算我们的代码覆盖率。但是,我收到以下错误。

未处理的异常:System.IO.FileNotFoundException:无法加载 文件或程序集 'Microsoft.VisualStudio.QualityTools.Common, 版本=14.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a' 或 它的依赖项之一。系统找不到指定的文件。
在 Microsoft.VisualStudio.TestTools.RunnerCommandline.Runner.Main(String[] 参数)

我在我们的测试项目中添加了对程序集 Microsoft.VisualStudio.QualityTools.Common 的引用,并将 Copy Local 设置为 true,以便将其复制到 bin 文件夹。

这是我执行 dotCover 的命令(我已将 dotCover 和 MSTEST 添加到我们的项目中,以便我们可以从 运行它Azure DevOps)。

dotCover.exe 分析 /TargetExecutable="工具\MSTest\MSTest.exe" /TargetArguments="/testcontainer:\MyServices.Tests\bin\MyServices.Tests.dll" /Output="output.html" /ReportType="HTML"

更新 09.10.2019

这是我的 .csproj 中对程序集的引用。我添加了对程序集 v15 的引用。

<Reference Include="Microsoft.VisualStudio.QualityTools.Common, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

【问题讨论】:

    标签: azure azure-devops dotcover


    【解决方案1】:

    从 Azure DevOps 运行 dotCover 时出错

    我们知道,程序集 Microsoft.VisualStudio.QualityTools.Common 是 Visual Studio 的一部分。

    当您将程序集Microsoft.VisualStudio.QualityTools.Common 添加到您的测试项目时,您将在您的项目文件.csproj 中获得以下信息:

      <ItemGroup>
        <Reference Include="Microsoft.VisualStudio.QualityTools.Common, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
      </ItemGroup>
    

    即使您将 Copy Local 设置为 true 以将其复制到 bin 文件夹中。但是\bin 文件夹默认被.gitignore/.tfignore 忽略。当您使用 Azure devops 构建项目时,它仍会从 PublicAssemblies 文件夹中搜索 dll 文件。

    如果我们不在构建代理机器上安装 Visual Studio 2015,我们将找不到它。

    所以,要解决这个问题,你需要在构建代理机器上安装Visual Studio 2015,然后检查IDE下是否有PublicAssemblies文件夹,然后检查Microsoft.VisualStudio.QualityTools.Common.dll文件是否存在。

    此外,如果您不想在构建代理计算机上安装 Visual Studio 2015,您可以将 Microsoft.VisualStudio.QualityTools.Common.dll 从 PublicAssemblies 文件夹复制到项目/解决方案文件夹,然后将其添加为参考而不是从 @ 987654335@文件夹,然后你会得到以下信息:

      <ItemGroup>
        <Reference Include="Microsoft.VisualStudio.QualityTools.Common, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
          <SpecificVersion>False</SpecificVersion>
          <HintPath>.\Microsoft.VisualStudio.QualityTools.Common.dll</HintPath>
        </Reference>
      </ItemGroup>
    

    然后,将此 .dll 文件添加到源代码管理中,并将其提交到 Azure 存储库。

    希望这会有所帮助。

    【讨论】:

    • 感谢您的回复,我会试一试,看看会发生什么。
    • @DomBurf,随时免费告诉我这个问题的最新状态,我会继续关注的。
    • 感谢您的回复。只是为了澄清,我已经在项目中添加了对该文件的引用。我已将 Copy Local 设置为 true,以便将其复制到 bin 文件夹中。该文件肯定在我的测试项目的 bin 文件夹中。但由于某种原因,dotCover 抱怨它找不到文件。这是一个 Azure DevOps 托管构建,所以我没有安装 Visual Studio 的选项。
    • @DomBurf,您使用的是哪个 Azure devops 托管代理?您可以使用托管 (vs2015-win2012r2) 来构建您的项目,该项目安装了 Visual Studio 2015”github.com/Microsoft/azure-pipelines-image-generation/blob/… 如果它对您没有帮助,您仍然可以在我的回答中尝试我的另一个解决方法。
    • 我正在使用 VS2017 Azure 主机进行构建。 VS2017会在主机上安装到哪里去?
    猜你喜欢
    • 1970-01-01
    • 2022-12-01
    • 2022-08-16
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    • 2021-09-27
    相关资源
    最近更新 更多