I assume you mean C# and VB.NET (even if you mean VB, let's forget it).
Basically, it can be used only in managed code, by referencing in the project or by loading it during run time using
System.Reflection.Assembly
.
You can develop mixed-mode assemblies which can be used as both .NET Assembly and a regular unmanaged DLL, but C# and VB.NET are not good enough to do that (but C++/CLI and IL can do it).
However, there is a very cunning solution to convert existing .NET Assembly in mixed mode and exporting some managed method to unmanaged. The idea is to disassemble the assembly to IL, modify IL code and re-assemble. This process can be automated.
Here are the CodeProject articles offering such solutions:
Unmanaged code can wrap managed methods[
^],
How to Automate Exporting .NET Function to Unmanaged Programs[
^].
See also my past solutions explaining the idea:
How can I use a dll created in Visual Basic 2008 in Visual Basic 6.0[
^],
Call Managed DLL written in C# from Unmanged Code VC++[
^].
—SA