The question quite an older and often asked around, i have similar questions here but my question is a bit more specific.
Q1. Is it legal to mix C# and VB.Net code i
The answer here that has the most votes only works for Web Site projects, not a Web App project. I think a lot of developers use the term "web application" generically ignoring the fact that technically it is a different thing in .NET. Microsoft says, "By default, a Web application is compiled based on language settings in the project file. Exceptions can be made, but it is relatively difficult." So, I am assuming the only way to do this would be to have two separate projects within one solution. (Again, a Web Site project has no solution or project file.) I'm not sure of all the details.
It seems you can mix them within the same project is you do the piece of code you require as a control. So if the main site is in C# and you do the VB part you want as a ascx control, you can drap and drop that within your site.
I did not realise that you could do that, but a team member worked it out on a piece of work he was doing.
From http://msdn.microsoft.com/en-us/library/t990ks23.aspx:
Multiple Programming Languages in the App_Code Folder
Because the source code in the App_Code folder is compiled into a single assembly, all the files in the App_Code folder must be in the same programming language. For example, the App_Code folder cannot include source code in both Visual Basic and C#.
However, you can configure your Web application to treat subfolders of the App_Code folder as separate compilable units. Each folder can then contain source code in a different programming language. The configuration is specified by creating a codeSubDirectories element in the compilation element of the Web.config file and adding a reference to the subfolder. The following example illustrates how you would configure subfolders named VBCode and CSCode to compile into separate assemblies:
<compilation debug="false">
<codeSubDirectories>
<add directoryName="VBCode" />
<add directoryName="CSCode" />
</codeSubDirectories>
</compilation>
The references to the VBCode and CSCode subfolders do not need to include any information about what programming language is contained in the subfolder. As with the App_Code folder itself, ASP.NET infers the compiler to use based on the files in the subfolder.