为什么必须将版本兼容性设置为不兼容二进制兼容性,然后回到二进制兼容性才能使其工作?

问题描述:

我的项目最初设置为二进制兼容性,但它不是建立。所以我首先将它设置为No Compatibility,它的构建方式很好。然后我将其设置回二进制兼容性,并覆盖以前生成的文件,它工作正常。为什么必须将版本兼容性设置为不兼容二进制兼容性,然后回到二进制兼容性才能使其工作?

为什么会发生这种情况?

我会冒险猜测您使用的二进制兼容位置是可执行文件本身而不是bincompat版本存储。

通过更改代码中的任何暴露的com接口,二进制兼容性将被破坏(您可以放弃扩展接口但不更改现有的/类型),从而阻止构建。

通过将其设置为无兼容性构建,检查将被丢弃并生成可执行文件。

然后,您将其更改回二进制文件,这是/为什么我认为您将二进制compat版本指向构建的exe本身,而不是单独的副本 - 因此可执行文件自动兼容并允许它构建。

+1

+1建议将单独的文件保存为二进制兼容位置,与可执行文件的临时版本分开。就像它在手册中说的那样。 PS Farhan,请仔细阅读手册,二进制兼容性非常重要,并且很好解释。 http://msdn.microsoft.com/en-us/library/aa733706(v=VS.60).aspx – MarkJ 2010-04-13 11:03:25

+0

非常感谢您的帮助! :) – 2010-04-13 14:04:30

我认为在VB6中有一个错误可以打开对dll/exe的引用,因此在使用二进制兼容性时不会释放它,所以有时可以帮助关闭VB6,重新打开它并建立。

+0

不,重新开放和建设不适合我。 – 2010-04-13 11:52:47