什么时候将pdb文件复制到shadow copy目录?

时间:2015-01-26 05:53:06

标签: nunit pdb-files opencover shadow-copy

我正在对OpenCover和NUnit进行一些修改以满足我的需求。

简单地说,即使在Nunit中启用了阴影复制,我也希望获得覆盖信息。但是,当pdb文件不存在时,OpenCover无法跟踪程序集。在NUnit中启用shadow-copy时,将测试中的程序集复制到shadow目录,OpenCover无法找到相应的pdf文件。

起初,我认为.Net Runtime并没有将pdb文件复制到shadow目录。但在我进一步研究这个问题后,我发现Runtime会复制pdb文件,但不会在复制程序集时同时复制。

我现在的理解是运行时将首先将程序集复制到影子目录。然后将加载这些程序集并通知Opencover。 OpenCover发现没有pdb文件,因此忽略这些程序集。稍后,pdb文件被复制,但OpenCover未能注意到这一事实,因此无法跟踪这些程序集。

所以我的问题是.Net Runtime将pdb文件复制到影子目录的确切时间是多少?我是否有可能修改OpenCover以便它能够跟踪这些阴影复制的程序集?

1 个答案:

答案 0 :(得分:0)

  

但是,当pdb文件不存在时,OpenCover无法跟踪程序集。

这是设计用于检测在没有PDB的情况下加载的每个组件意味着检测每个IL操作而不是每个序列点,其信息在PDB中。

  

稍后,pdb文件被复制,但OpenCover未能注意到这一事实,因此无法跟踪这些程序集。

如果稍后复制PDB,那么OpenCover为时已晚,因为运行时已经加载了程序集,因此OpenCover做出了仪表决策。

现在, OpenCover使用各种位置来查找PDB

  1. 它看起来与从
  2. 加载程序集的文件夹相同
  3. 它查找-workingdir
  4. 设置的文件夹
  5. 它在当前目录中查找
  6. 然而,来支持/ noshadow我通常会发现-mergebyhash选项解决了这个问题,如果没有,那么我使用上面列表中最简单的#2