Use VB.NET and C# in the same application?
I am developing a GUI based application in MS Visual Studio 2005, I just want to know if it is possible to use both VB.NET and C# in the same project. Or can I include a module written in C# in my VB.NET project?
I have a class written in C# which I want to use in my VB.NET based project, so if I can include and call functions from that project than I won't have to write the class again in VB.NET.
So please help me as I am new to .NET programming.
Solution 1:
I just want to know that is it possible to use both VB and C# in the same project.
No, not in the same project. On the other hand, you can use them in the same solution.
Or can i include a module written in C# in my VB.net project.
I propose that you create a solution containing two projects: one in C# which forms a library that you use from your VB project. This is straightforward, easy to maintain and easy to extend.
Solution 2:
I've never done it myself, but I know you can compile the C# code into a dll and then load and reference the dll in your VB project.
From "Calling C# class in VB.net":
I think the C# code that you want to use must be compiled as a DLL. Once that is done, simple add a reference to that project to your VB.Net project, import the namespace you need, and then you can use the C# code.
Also see How To: Create and Use C# DLLs (from MSDN, for VS2005)
Solution 3:
You also want to ensure that you C# code is CLS compliant. This means that it won't publicly expose any functionality which other .NET languages won't understand (for example unsigned ints - which don't exist in VB, or differing classes only by case - since VB is not case-sensitive). To do this you need to add an attribute so that the compiler will raise errors if you have broken any of the guidelines. This article shows you how to do this:
The CLSCompliantAttribute can be applied to assemblies, modules, types, and members.
For marking an entire assembly as CLS compliant the following syntax is used
using System; [assembly:CLSCompliant(true)]
For marking a particular method as CLS compliant the following syntax is used
[CLSCompliant(true)] public void MyMethod()`