能否在同一个asp.net网站中使用C#和vb.net?

4

是否可以在同一个asp.net网站中同时使用C#和vb.net?而不需要将它们分开放置在类库中。

6个回答

4
在App_Code子文件夹中创建两个新的子文件夹,一个用于存放C#类,另一个用于存放VB.NET类。然后在web.config文件中的部分指定这两个文件夹,格式如下:
<system.web>

<compilation debug="true">

<codeSubDirectories>

<add directoryName="CSharp"/>

<add directoryName="VB"/>

</codeSubDirectories>

</compilation>

或者您可以在其他语言中创建新项目并添加引用。


从他的问题中可以看出,你的方法在不将类库分离的情况下是行不通的。 - Punit Vora
注意:Web 应用程序项目可以有一个 App_Code 文件夹,但 Web 站点不行。(即,如果你在 Web 站点中创建一个名为 App_Code 的文件夹,它将没有特殊含义。) - Guffa
1
Guffa,反过来了,不是吗? - citronas

3
不行 - 编译器需要将不同语言的代码文件分别编译。C#类库不能包含VB.NET代码,因为编译器无法区分哪些代码文件是用哪种语言编写的。

还有很多其他的文件扩展名,通常根本不应该编译。 - Tomas Aschan
1
响应不是“否”,而是“是”,我们在“网站”中每天都使用它。我认为你不能在Web应用程序中做到这一点,但在网站中可以。我们唯一的问题是当我们使用F12(转到定义)时,Visual Studio无法正确地在语言之间导航。但是,我可以在VB中编写一个“baseClass”,并在C#中继承它,所有这些都在同一个app_code中,使用Florim提供的方法。 - foxontherock

3
如果您有一个Web应用程序项目,那么是可能的。
如果您有一个网站项目,那么就不可能了。

1
这两者之间的实际区别是什么? - Bassel Alkhateeb
1
@Bassel:Web应用程序项目是一种较新的项目类型。它更像其他项目,驻留在“项目”文件夹中,而Web站点项目针对基于文件的网站工作,可以驻留在IIS文件夹或Websites文件夹中。 - Guffa
2
@Guffa:实际上,WAP几乎与原始的Web应用程序类型相同。 - John Saunders
1
@John:你在说什么?有很多区别,例如Web应用程序项目会精确跟踪哪些文件是项目的一部分,而网站只是由所有文件和文件夹组成,这些文件和文件夹恰好在该文件夹中。 - Guffa
1
@Guffa:网站项目实际上比WAP更新。 - Raúl Roa
@Raúl:要么你在谈论完全不同的事情,要么你就是明显错误的。网站是自Visual Studio .NET第一个版本以来存在的项目类型。Web应用程序项目在两个或三个版本之后出现了。 - Guffa

1

从理论上讲,这是可能的。正如一些人在这里指出的那样,可以使用各种技术在同一个应用程序中使用多个类库,每个类库都用不同的编程语言编写。最终它模拟了使用多种语言编写单个应用程序的体验。我认为大多数情况下这应该足够了。

.NET和CLR还有一个鲜为人知的功能叫做“net模块”。请参阅此博客文章以了解有关net模块和程序集(甚至是多文件程序集)的说明。

说了这么多,我的第一个建议是选择一种语言并坚持使用它。如果这不是一个选项,那么使用多个程序集是一个不错的选择。使用Florim提到的App_Code技巧将允许您将所有文件保存在一个项目中,尽管ASP.NET会在磁盘上创建多个程序集(但您永远看不到它们)。

如果您对使用多个“程序集”而不是多个“项目”有一些担忧,那么找出这种担忧是什么会很有帮助。ASP.NET 项目几乎总是编译成多个程序集。虽然有一些避免这种情况的技巧,但它们很少被使用(例如 aspnet_compiler 和 aspnet_merge)。

0

当我尝试时,我发现默认情况下不能在 App_Code 文件夹下的网站中使用不同的语言。但是对于其他文件来说(App_Code 以外),是可以的。

如果想要在 App_Code 文件夹下拥有不同的语言,您需要使用 Florim 提到的技术。

感谢大家的帮助。


-1

无法尝试不同语言


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接