- INDEX VB TO NET
- KNOWLEDGE BASE
- EWIS-ISSUES
- ISSUE #2080
WARNING #2080
1% was upgraded to 2% and has a new behavior.
Description
The Visual Basic Upgrade Companion converts VB6 library items (types and members) to .NET equivalents whenever possible. For some VB6 elements there are .NET constructs that work in a very similar way but may differ in their behavior depending on how they are used. The VBUC generates the EWI 2080 for these scenarios.
During the upgrade process, some class members can be mapped to .NET structures with minor behavior differences. If this EWI is displayed in a given project, the selected target structure will keep the functional equivalence of the resulting code but may end up having small differences in some cases that may require some manual fine tuning, such as methods that are called in a different order or text that is displayed in a different font.
Recommendations
- Evaluate whether the specific differences might be present on the specific code being upgraded. Sometimes these potential differences won't affect the application depending on how the original VB6 element was used.
- Apply some modification to the upgraded source code which references the conflictive elements so that the differences are resolved.
- Implement a new element in .NET that doesn’t show the conflictive behavior differences. This might be done from scratch or by taking advantage of the existing .NET elements by using extension or wrapping approaches.
- If a different element will be used instead of the one being generated by VBUC, the Custom Mappings Feature could be used to override the preexisting conversion.
Source VB6
Public Function Exists(col As Collection, Index As String) As Boolean Dim o As Variant On Error GoTo Error MsgBox o Error: Exists = o <> Empty End Function
Target VB.NET
Public Function Exists(ByVal col As OrderedDictionary, ByVal Index As String) As Boolean Dim o As Object Try MessageBox.Show(ReflectionHelper.GetPrimitiveValue(Of String)(o), My.Application.Info.Title) Catch End Try 'UPGRADE_WARNING: (2080) IsEmpty was upgraded to a comparison and has a new behavior. Return Not Object.Equals(o, Nothing) End Function
Target C#
internal static bool Exists(OrderedDictionary col, string Index) { object o = null; try { MessageBox.Show(ReflectionHelper.GetPrimitiveValue<string>(o), AssemblyHelper.GetTitle(System.Reflection.Assembly.GetExecutingAssembly())); } catch { } //UPGRADE_WARNING: (2080) IsEmpty was upgraded to a comparison and has a new behavior. return !Object.Equals(o, null); }
See another example for VB6 SavePicture command
See another example for VB6 Form_Load event
![icon-resources.png](https://www.mobilize.net/hs-fs/hubfs/1webSITE-Images/Images/Important-sources.png?width=372&name=Important-sources.png)
8 Proven Tips for
Planning a Successful Migration
Learn More