Sorry, I was hoping to insert this comment, but SO does not allow me to do this.
As far as I know, VB did not add the C # merge function, but your statement that there is no solution in VB.Net is incorrect.
2011 Reflection . , , DLL Intellisense DLL. Reflection.Assembly.LoadFile, DLL CreateInstance Object . . Reflection, MethodInfo/PropertyInfo/etc. , , , , .
.
Sub Test()
' assume you chose Version 2 as to reference in your project
' you can create an instance of its classes directly in your code
' with full Intellisense support
Dim myClass1V2 As New CommonRootNS.Class1
' call function Foo on this instance
Dim resV2 As Int32 = myClass1V2.foo
' to get access to Version 1, we will use Reflection to load the Dll
' Assume that the Version 1 Dll is stored in the same directory as the exceuting assembly
Dim path As String = IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location)
Dim dllVersion1Assembly As Reflection.Assembly
dllVersion1Assembly = Reflection.Assembly.LoadFile(IO.Path.Combine(path, "Test DLL Version 1.dll"))
' now create an instance of the Class1 from the Version 1 Dll and store it as an Object
Dim myClass1V1 As Object = dllVersion1Assembly.CreateInstance("CommonRootNS.Class1")
' use late binding to call the 'foo' function. Requires Option Strict Off
Dim retV1 As Int32 = myClass1V1.foo
End Sub