BUG: No Incompatibility Error When Interface Changes
ID: Q190507
|
The information in this article applies to:
-
Microsoft Visual Basic Learning, Professional, and Enterprise Editions for Windows, version 6.0
SYMPTOMS
If an ActiveX DLL project has a subroutine that takes a class in another
ActiveX DLL as its parameter, modifying the class will not generate an
incompatibility error when the project runs in the design environment, even
though the class is set to be binary compatible.
CAUSE
While compiling a project that references an ActiveX DLL that has been
modified, Visual Basic will replace the reference to the old DLL with the
one to the new DLL. After that, it compiles the project and replaces the
reference back to the old DLL. However, while running the project in design
environment, this reference replacement does not occur since no compilation
is done. Therefore the expected incompatibility error only occurs in
compilation but not in the design environment.
RESOLUTION
Compiling the DLL corrects this behavior.
STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed
at the beginning of this article. We are researching this bug and will post
new information here in the Microsoft Knowledge Base as it becomes
available.
MORE INFORMATION
Steps to Reproduce Behavior
- Start a new ActiveX DLL project in Visual Basic. Class1 is created by
default.
- Select Project1 Properties from the Project menu and change the Project
Name to "TestApp1."
- Paste the following code into Class1:
Public Sub TestMethod1()
End Sub
- Select Make TestApp1.dll from the File menu, and compile the DLL.
- Select TestApp1 Properties from the Project menu, and select the Binary
Compatibility option on the Component tab.
- Select Add Project from the File menu, and add another ActiveX DLL
project to the project group. Repeat step 2 and change its name to
"TestApp2."
- Select References from the Project menu, and check the reference to
TestApp1.
- Paste the following code into Class1 of TestApp2:
Public Sub A(obj As TestApp1.Class1)
End Sub
- Select Make TestApp2.dll from the File menu, and compile the DLL.
- Repeat step 5 to set Binary Compatibility for TestApp2.dll.
- In the Project Group Window, right-click on TestApp2, and choose Set As
Start Up.
- Paste the following code into Class1 of TestApp1:
Public Sub TestMethod2()
End Sub
- Select Make TestApp1.dll from the File menu. When prompted for a name,
change it to TestApp3. Click OK.
- Press the F5 key to run the project.
- When the Project Properties dialog for TestApp2 appears, leave the
default option selected, and click OK. TestApp2 starts up correctly,
although it is referencing TestApp1 ,which has been replaced by
TestApp3. No incompatibility error is reported.
Additional query words:
kbdss kbDSupport kbVBp kbVBp600bug kbActiveX kbAutomation
Keywords : kbGrpVB
Version :
Platform : WINDOWS
Issue type : kbbug