繁体   English   中英

何时将pdb文件复制到卷影复制目录?

[英]When will pdb files be copied to shadow copy directory?

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

简而言之,即使在Nunit中启用了卷影复制,我也想获取覆盖率信息。 但是,缺少pdb文件时,OpenCover无法跟踪程序集。 在NUnit中启用卷影复制后,将被测试的程序集复制到卷影目录,而OpenCover无法找到相应的pdf文件。

起初,我以为.Net运行时不会将pdb文件复制到影子目录。 但是,在我进一步调查了这个问题之后,我发现运行时将复制pdb文件,但复制程序集的时间不同。

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

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

但是,缺少pdb文件时,OpenCover无法跟踪程序集。

这是设计使然,因为在没有PDB的情况下检测每个加载的程序集意味着对每个IL操作而不是每个序列点进行检测,而每个序列点的信息都在PDB中。

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

如果稍后复制PDB,则对于OpenCover而言为时已晚,因为运行时已经加载了程序集,因此OpenCover做出了其检测决定。

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

  1. 它看起来与从中加载程序集的文件夹相同
  2. 它看起来在-workingdir设置的文件夹中
  3. 它看起来在当前目录中

但是,为了支持/ noshadow,我通常会找到-mergebyhash选项来解决此问题,否则,我会使用最容易使用的上方列表中的#2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM