[英]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
-workingdir
设置的文件夹中 但是,为了支持/ noshadow,我通常会找到-mergebyhash
选项来解决此问题,否则,我会使用最容易使用的上方列表中的#2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.