比较VB6.exes

比较VB6.exes,vb6,migration,compare,Vb6,Migration,Compare,我们正在经历一个大规模的迁移项目,并试图验证部署到live estate的代码是否与源代码管理中的代码匹配 显然.net代码很容易比较,因为我们可以反汇编。由于编译方式的原因,我认为在vb6 EXE中不可能做到这一点 有人对我如何验证源代码和编译后的可执行文件与我在Live中的文件相匹配有什么想法吗 谢谢不幸的是,这几乎是不可能的。请记住,在不同机器上编译的VB6代码将具有不同的exe大小和部署要求 这就是为什么老VB有一台专门的机器来编译他们的代码。Visual Basic有两种编译方法,一种

我们正在经历一个大规模的迁移项目,并试图验证部署到live estate的代码是否与源代码管理中的代码匹配

显然.net代码很容易比较,因为我们可以反汇编。由于编译方式的原因,我认为在vb6 EXE中不可能做到这一点

有人对我如何验证源代码和编译后的可执行文件与我在Live中的文件相匹配有什么想法吗


谢谢

不幸的是,这几乎是不可能的。请记住,在不同机器上编译的VB6代码将具有不同的exe大小和部署要求

这就是为什么老VB有一台专门的机器来编译他们的代码。

Visual Basic有两种编译方法,一种是到解释器(称为p-code),这将产生更小的二进制文件,另一种是生成“常规”windows.exe文件(称为本机)这是因为它应该比p代码快;尽管此选项增加了编译文件的大小。 如果您的编译使用的是p代码,理论上可以恢复源代码

无论哪种方法都很难做到,但有一些工具声称它们可以部分做到这一点,据我所知(从未尝试过,但有一个试用版)是VB反编译器

这对已经部署的项目没有帮助,但是如果您在每次编译时都增加了版本号(有一个项目设置自动为您执行此操作),那么您就可以轻松地比较版本号。

我的老公司买了一个VB反编译器的副本,正如在VB5/6生成p代码之前所述,该工具确实产生了一些代码,如果不是汇编代码,也可以“读取”

如果您拥有编译的所有代码,则可以将该代码的CRC与部署在该字段中的代码进行比较。但是如果您没有原始编译代码,这取决于您编译代码的方式(如果您使用的是P代码而不是本机代码,那么您可能可以反汇编,但反汇编看起来与您的源代码完全不同)。我怀疑您是否会将PDB与exe一起提供,但如果您提供了,您肯定可以使用它们与存储库中的源代码进行比较。

拥有一台受信任的计算机,它可以检查您制作的各种库和exe,并自动编译它们。将其保存在只读但可访问的位置。然后在部署的站点和比较站点之间进行二进制比较


然而,我不确定拆卸符合要求的装置的逻辑。我的公司和我所知道的大多数其他地方都结合使用构建计算机和单元测试。在我们公司,我们制作的EXE是一个覆盖在一堆库上的薄壳。例如,按钮单击将传递给执行实际处理的UI Active X DLL。构建之后,我们要做的是运行一个特殊的EXE来执行单元测试列表。如果它们都通过了测试,我们就知道我们的库(90%的代码都在其中)是好的。至于实际的EXE,我们有一个手动程序,大约需要两个小时,然后我们就好了。在EXE中很少发生任何错误。

听起来你需要更好的源代码控制和/或策略。很棒的工具。这永远不会是一门完美的科学。我们正在做的是用exe反编译并保存项目文件。然后,我们使用超越比较工具进行比较。不完美,但这只是一个开始。谢谢