c# - 无法在 Visual Studio 2019 16.2 中加载文件或程序集 Microsoft.VisualStudio.Coverage.Analysis

标签 c# visual-studio .net-core code-coverage xunit

我最近安装了 VS2019 Prof 16.2 并在加载 .coverage 时遇到以下错误文件:

Microsoft Visual Studio
Exception was thrown: Could not load file or assembly 'Microsoft.VisualStudio.Coverage.Analysis,
Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or
one of its dependencies. The system cannot find the file specified.

我知道这通常意味着(对于以前的 VS 版本)您需要先运行测试然后加载覆盖文件,但现在对于 2019 16.2 它不起作用。但是,加载相同的覆盖文件在 VS2017 Community 15.9.14 中有效
Microsoft.VisualStudio.Coverage.Analysis.dll位于C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Extensions\TestPlatform并有版本 16.0.28223.3002
还有其他人遇到这个问题吗?

可以在我的 git https://github.com/miqm/playground/tree/master/SchedulingApp 上找到配置为重现问题的测试项目
生成 .coverage我跑 dotnet test -s Default.runsettings然后我使用 File -> Open 将它加载到 VS。

我尝试在启用/logs 的情况下运行 VS,但没有任何有意义的出现。只有在我尝试打开报道时的日志是:
<entry>
    <record>777</record>
    <time>2019/08/03 20:48:17.804</time>
    <type>Information</type>
    <source>VisualStudio</source>
    <description>Begin package load [Microsoft.VisualStudio.TestTools.TestCaseManagement.QualityToolsPackage, Microsoft.VisualStudio.QualityTools.TestCaseManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]</description>
    <guid>{A9405AE6-9AC6-4F0E-A03F-7AFE45F6FCB7}</guid>
  </entry>
  <entry>
    <record>778</record>
    <time>2019/08/03 20:48:18.097</time>
    <type>Information</type>
    <source>VisualStudio</source>
    <description>Begin package load [Microsoft.VisualStudio.TestTools.Tips.TuipPackage.TuipPackage, Microsoft.VisualStudio.QualityTools.Tips.TuipPackage, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]</description>
    <guid>{52CBD135-1F97-2580-011F-C7CD052E44DE}</guid>
  </entry>
  <entry>
    <record>779</record>
    <time>2019/08/03 20:48:18.152</time>
    <type>Information</type>
    <source>VisualStudio</source>
    <description>End package load [Microsoft.VisualStudio.TestTools.Tips.TuipPackage.TuipPackage, Microsoft.VisualStudio.QualityTools.Tips.TuipPackage, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]</description>
    <guid>{52CBD135-1F97-2580-011F-C7CD052E44DE}</guid>
  </entry>
  <entry>
    <record>780</record>
    <time>2019/08/03 20:48:18.164</time>
    <type>Information</type>
    <source>VisualStudio</source>
    <description>End package load [Microsoft.VisualStudio.TestTools.TestCaseManagement.QualityToolsPackage, Microsoft.VisualStudio.QualityTools.TestCaseManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]</description>
    <guid>{A9405AE6-9AC6-4F0E-A03F-7AFE45F6FCB7}</guid>
  </entry>

任何帮助表示赞赏。

最佳答案

微软回应
根据微软对错误报告 ( https://developercommunity.visualstudio.com/content/problem/676360/cannot-open-coverage-file-from-visual-studio-2019.html ) 的回应,结果表明,打开 Coverage 文件只是企业版的功能。
它之所以(并且正在)在 2017 社区和专业版和 2019 <16.2 上工作的原因是一个小故障,在运行所有测试后,缺少的程序集已加载并可以打开覆盖范围。
特尔;博士:
要恢复 Professional 上的开放覆盖文件(可能还有 Community,没有测试过),我们需要添加 ;Extensions\TestPlatform<probing privatePath=""/>%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\16.0_ 中列出somehash \devenv.exe.config文件。
或者....
复制

Common7/IDE/Extensions/TestPlatform/Microsoft.VisualStudio.Coverage.Analysis.dll
Common7/IDE/Extensions/TestPlatform/Microsoft.VisualStudio.Coverage.Interop.dll
Common7/IDE/PrivateAssemblies
背景
要打开覆盖文件,如错误状态,需要 dll 文件。该文件在企业版中位于并加载于:Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.Coverage.Analysis.dll但是,相同的文件在 Common7\IDE\Extensions\TestPlatform 中.所以我们有需要的程序集文件,但 devenv 不知道它在那里。
%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\有像 16.0_hash 这样的子文件夹,其中包含 devenv.exe.config指定所需汇编及其位置的文件。
在每个文件中还有 <probing>指定其他位置以告诉 devenv.exe 在哪里查找 dll 程序集的条目。 Enterprise 和 Professional 具有相同的条目,但由于 Enterprise 版本在 PrivateAssemblies 中缺少文件此列表中的文件夹,devenv 正在加载它。
因此,我们需要将 dll 文件从 TestExtensions 复制到 PrivateAssemblies 或将文件夹路径添加到探测列表。

关于c# - 无法在 Visual Studio 2019 16.2 中加载文件或程序集 Microsoft.VisualStudio.Coverage.Analysis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57342026/

相关文章:

c# - JSON 值无法转换为 System.Byte[]

c# - 列表中的 wpf 扩展器在检查时并不总是执行命令

c# - CLR 检测到无效程序

javascript - 将 resx 编译为 Javascript

c# - 在 gridview 行命令中获取 BoundField 值

c# - 在aws lambda中使用.NET core读取excel文件

c# - .NET Core/EF Core 2.0 升级后急切加载 "No coercion operator is defined between types"

c# - 将生成的 PDF 数据加载到 ASP.NET MVC 上的 IFRAME 中

c# - 似乎无法在 c# 中使用 XmlSerializer 反序列化非常简单的 xml

c# - ASP.NET Core 2.2 Web API 没有命中任何已配置的路由,这是为什么?