我们都知道在创建新的ASP.NET页面时,可以针对不同的页面选择不同的编程语言。也就是说同一个站点下,A页面用C#编写,而B页面用VB.NET编写。(下面说点不是废话的)
但是,我以前一直以为,在一个神奇的目录“App_Code”下的类,必须只能使用同一种编程语言编写。也就是说,如果App_Code有VBClass.vb、CSharpClass.cs' 两个类,分别使用C#和VB.NET编写,那么编译的时候就会提示如下错误:
The files '/WebSite/App_Code/VBClass.vb' and '/WebSite/App_Code/CSharpClass.cs' use a different language, which is not allowed since they need to be compiled together.
现在可以更正一下这个观点了。实际上,我们完全也可以在App_Code中使用不同的编程语言编写类。方法就是,将不同编程语言的类分别放到不同的子目录下,比如,所有C#编写的类,就直接放在App_Code目录下,然后在App_Code目录下创建一个子目录,比如叫VBCode,而所有VB.NET写的类都放到VBCode这个目录下,然后修改一下web.config设置:
<compilation>
<codeSubDirectories>
<add directoryName="VBCode"/>
</codeSubDirectories>
</compilation>
关键就在于对<codeSubDirectories>的设置。