As you learned earlier, the .NET languages all compile to a common language known as the Microsoft Integrated Language, or MSIL. This is what allows .NET languages to easily share classes between assemblies as if they were all written in the same language. Because these languages are all precompiled to MSIL, there is really no difference between a DLL written in VB, C#, C++, and any other .NET language.
In order to use classes from other languages within a .NET application, it is necessary to build an assembly that contains those classes. An assembly is usually a DLL file that contains classes that are publicly available for use by other applications and components.
Once assemblies are built that contain the classes in each of the languages, the application references those assemblies, which makes the namespaces and classes available for use within the application. The references are stored within the assembly of the application and tells it where to find the components at runtime.