dotpeek 显示不同版本的代码

dotpeek showing code from different version

我对 dotpeek 产品有过最奇怪的事情。

我从本地文件夹打开了一个旧的 dll 版本,并在 dotpeek 中看到了一些添加到较新版本的代码。 经过大约一天的调查,反汇编向我展示了旧代码。

有人可以向我解释如何做到这一点以及将来如何避免它。 我能想到的唯一解释是较新的版本被加载到 GAC(全局程序集缓存)。

有人遇到过这个问题并且知道如何解决吗?

有一个选项"Use debug information for navigation"。如果设置,dotPeek 将尝试使用 .pdb 文件中的源文件信息,并显示 class 的实际源,而不是反编译。可能是 dotPeek 正在显示源文件,但自上次编译 .dll 以来该文件已更改。清除此复选框意味着 dotPeek 将始终反编译。

存在一个问题 (DOTP-7375) raised to use better wording for the option, so it's obvious what dotPeek is doing. And I've just raised another issue (DOTP-7376) 以确保 dotPeek 还验证源文件的校验和与 .pdb 中的校验和,这样它就不会显示 out-of-date/newer 个源文件。

确保删除本地源文件。

当本地源文件不存在时,dotpeek 将强制反编译它。