Microsoft KB Archive/190507

= BUG: No Incompatibility Error When Interface Changes =

Article ID: 190507

Article Last Modified on 5/13/2003

-

APPLIES TO


 * Microsoft Visual Basic 6.0 Learning Edition
 * Microsoft Visual Basic 6.0 Professional Edition
 * Microsoft Visual Basic 6.0 Enterprise Edition

-



This article was previously published under Q190507



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.



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.</li> 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."</li> Select References from the Project menu, and check the reference to TestApp1.</li>  Paste the following code into Class1 of TestApp2: Public Sub A(obj As TestApp1.Class1) End Sub </li> Select Make TestApp2.dll from the File menu, and compile the DLL.</li> Repeat step 5 to set Binary Compatibility for TestApp2.dll.</li> In the Project Group Window, right-click on TestApp2, and choose Set As Start Up.</li>  Paste the following code into Class1 of TestApp1: Public Sub TestMethod2 End Sub </li> Select Make TestApp1.dll from the File menu. When prompted for a name, change it to TestApp3. Click OK.</li> Press the F5 key to run the project.</li> 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.</li></ol>

Additional query words: kbdss kbDSupport kbVBp kbVBp600bug kbActiveX kbAutomation

Keywords: kbbug KB190507

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.