System.Web.HttpException: 文件“/App_Code/ClassA.vb”和“/App_Code/ClassB.cs”使用的语言不同,这是不允许的,因为它们要在一起编译。
我们并未显示的标记App_Code中的源代码是使用哪种语言编写的,那编译的时候是怎么判断的?估计是根据文件的类型(假设的),如果是.vb文件则调用Visual Basic编译器,如果是.cs文件则调用C#编译器,所以你不能在App_Code中存放多种类型的文件,否则将无法判断应用哪种类型编译器来生成单个程序集!
不过在文章的开头我们有说"默认情况下他们在动行时会被编译成单个程序集",实际上通过配置我们可以实现将App_Code某个子文件夹的源代码单独编译成一个程序集,只要保证该子文件夹中的源代码使用一种语言编写即可,这样就可以将App_Code中的源代码编译成多个程序集,那上边的问题就解决了。配置方法也很简单,在Web.Config中增加codeSubDirectories节点即可,如:
<system.web>
<compilation>
<codeSubDirectories>
<add directoryName="VBCode" />
<add directoryName="CSCode" />
</codeSubDirectories>
</compilation>
</system.web>这样VBCode和CSCode子文件中的源代码都将被编译成单个程序集。注意上边文件夹不表示VBCode子文件夹下源代码必须是用vb编写,CSCode子文件夹下的源代码必须是用C#编写,还是在运行的时候根据子文件夹中的文件类型来决定使用哪种编译器的。
评论(0)
暂无评论。