gpt4 book ai didi

c# - 为什么具有 SecurityTransparent 属性的程序集会导致通过探查器检测的代码抛出 VerificationException?

转载 作者:太空狗 更新时间:2023-10-29 23:41:19 27 4
gpt4 key购买 nike

似乎当我使用 OpenCover 检测程序集时, 组件与 SecurityTransparent属性(似乎还有 AllowPartiallyTrustedCallers)将抛出 VerificationException。我想知道为什么会这样,如果有另一种解决方案可以在不包含这些属性的情况下重新编译程序集,即条件编译,如下载的 MVC3 代码所示(但奇怪的是,当我浏览codeplex 上的存储库)。请注意,如果没有这些程序集属性,覆盖范围将毫无问题地运行。

OpenCover 使用 CALLI instruction将检测数据(序列点标识符)发送到分析器。调用这条指令的行为似乎导致了异常的发生;检测部分看起来很好,JIT 毫无问题地编译了新的检测方法。检测行为不会导致问题,因为如果我删除除使 Tiny 方法 Fat 和小分支变长之外的所有检测,代码将毫无问题地执行。

目前我正在使用 Mono.Cecil 检查通过“include-in-coverage”过滤器的程序集并向用户报告问题,同时跳过检测然后继续,但我想知道是否有任何问题我可以在分析期间避免此问题并避免重新编译。

所以总结 2 个问题“为什么会发生?”和“我可以在不重新编译的情况下避免它吗?”

注意:PartCover 似乎也出现了这个问题,它使用不同的方法来记录访问点。

注意:我是 OpenCover(一种开源代码覆盖工具)的开发者,目前是 PartCover 的维护者。

最佳答案

关于c# - 为什么具有 SecurityTransparent 属性的程序集会导致通过探查器检测的代码抛出 VerificationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7218280/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com