【发布时间】:2010-12-30 22:30:30
【问题描述】:
C# 和 vb.net 可以在同一个 asp.net 网站上吗?无需在类库中分离。
【问题讨论】:
C# 和 vb.net 可以在同一个 asp.net 网站上吗?无需在类库中分离。
【问题讨论】:
否 - 编译器需要分别编译不同语言的代码文件。 C# 类库不能包含 VB.NET 代码,因为编译器无法区分哪些代码文件是用哪种语言编写的。
【讨论】:
如果您有一个 Web 应用程序项目,那么这是可能的。
如果您有一个网站项目,那么这是不可能的。
【讨论】:
尝试在 App_Code 子文件夹中创建 2 个新子文件夹,一个用于 C# 类,另一个用于 VB.NET 类。之后在 web.config 的部分中指定这两个文件夹,如下所示:
<system.web>
<compilation debug="true">
<codeSubDirectories>
<add directoryName="CSharp"/>
<add directoryName="VB"/>
</codeSubDirectories>
</compilation>
或者您可以用其他语言创建新项目并为其添加参考。
【讨论】:
在非常理论的层面上这是可能的。正如这里的一些人所指出的,可以使用各种技术在同一个应用程序中拥有多个类库,每个类库都用不同的编程语言编写。最后,它模拟了用多种语言编写单个应用程序的体验。我会说大部分时间应该足够了。
.NET 和 CLR 还有一个鲜为人知的特性,称为“网络模块”。有关网络模块和程序集(甚至是多文件程序集!)的说明,请参阅此 blog post。
说了这么多,我的第一个建议是选择一种语言并坚持下去。如果这不是一个选项,拥有多个程序集是一个不错的选择。使用 Florim 提到的 App_Code 技巧将允许您将所有文件保存在一个项目中,即使 ASP.NET 将在磁盘上创建多个程序集(但您永远不会看到它们)。
如果您担心拥有多个程序集而不是多个项目,那么找出问题所在会很有帮助。 ASP.NET 项目,无论以何种方式,几乎总是被编译成多个程序集。有一些技巧可以避免这种情况,但很少使用(例如 aspnet_compiler 和 aspnet_merge)。
【讨论】:
尝试后,我发现您不能(默认情况下)在 App_Code 文件夹下的网站中使用不同的语言。但是对于 (App_Code) 之外的其他文件,您可以。
为了能够在 App_Code 下使用不同的语言,您需要 Florim 提到的技术。
谢谢大家的帮助。
【讨论】:
无法尝试不同的语言
【讨论】: