我们正在使用Visual Studio 2008中的c#开发一个系统。
当我配置VS来检测我的dll并运行测试时,只有未签名的dll会被检测(很好地找到我们忘记的那个)。
有没有办法在已签名的dll上生成代码覆盖率,还是我必须取消签名,运行分析然后重新签名?
由于
西拉
答案 0 :(得分:3)
无法检测已签名程序集的原因是检测过程会更改程序集的内容。这将改变程序集的散列,从而使数字签名无效。
最好的方法是取消分析运行的程序集。
答案 1 :(得分:2)
如前所述,在检测(或以其他方式修改)已签名的程序集时,程序集签名无效。
具有讽刺意味的是,由于.NET具有此API,因此不需要检测来进行性能分析/覆盖率分析。但是,由于某些不明原因,Visual Studio覆盖率分析和分析器不使用此API ...第三方产品(如分析器dotTrace和ANTS)或覆盖率分析工具(如NCover)使用API方法,因此无需篡改组件本身。
在我们当前的项目中,正是这个问题让我们购买了第三方工具,因为在没有签署我们非常复杂的解决方案的情况下进行开发会因为大量的反思而付出巨大的努力而且是不可能的。