【问题标题】:Is it possible to have C# and vb.net in the same asp.net website?是否可以在同一个 asp.net 网站中拥有 C# 和 vb.net?
【发布时间】:2010-12-30 22:30:30
【问题描述】:

C# 和 vb.net 可以在同一个 asp.net 网站上吗?无需在类库中分离。

【问题讨论】:

    标签: c# .net asp.net vb.net


    【解决方案1】:

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

    【讨论】:

    • 还有很多其他文件扩展名,通常根本不应该编译。
    • 响应不是没有,是“是”,我们每天在“网站”中使用它。我不认为你可以在网络应用程序中做到这一点,但在网站上你可以。我们唯一的问题是当我们使用 F12(goto 定义)时,Visual Studio 无法在语言之间正确导航。但是,当使用 Florim 提供的方法时,我可以有一个用 VB 编写的“baseClass”,并在 C# 中继承它,所有这些都在同一个 app_code 中。
    【解决方案2】:

    如果您有一个 Web 应用程序项目,那么这是可能的。

    如果您有一个网站项目,那么这是不可能的。

    【讨论】:

    • 两者的实际区别是什么?
    • @Bassel:Web 应用程序项目是一种较新的项目类型。它更像其他项目,位于 Projects 文件夹中,而 Web Site 项目针对基于文件的网站工作,位于 IIS 文件夹或 Websites 文件夹中。
    • @Guffa:实际上,WAP 与原始 Web 应用程序类型几乎相同。
    • @John:你在说什么?有许多不同之处,例如,Wep 应用程序项目会准确跟踪哪些文件是项目的一部分,而网站只是由恰好位于文件夹中的所有文件和文件夹组成。
    • @Guffa:网站项目实际上比 WAP 更新。
    【解决方案3】:

    尝试在 App_Code 子文件夹中创建 2 个新子文件夹,一个用于 C# 类,另一个用于 VB.NET 类。之后在 web.config 的部分中指定这两个文件夹,如下所示:

    <system.web>
    
    <compilation debug="true">
    
    <codeSubDirectories>
    
    <add directoryName="CSharp"/>
    
    <add directoryName="VB"/>
    
    </codeSubDirectories>
    
    </compilation>
    

    或者您可以用其他语言创建新项目并为其添加参考。

    【讨论】:

    • 从他的问题中......“......没有在类库中分离”。我不认为你的方法在这种情况下有效。
    • 注意:Web 应用程序项目可以有一个 App_Code 文件夹,而网站不能。 (即,如果您在网站中创建具有该名称的文件夹,则它没有特殊含义。)
    • Guffa,反过来,不是吗?
    【解决方案4】:

    在非常理论的层面上这是可能的。正如这里的一些人所指出的,可以使用各种技术在同一个应用程序中拥有多个类库,每个类库都用不同的编程语言编写。最后,它模拟了用多种语言编写单个应用程序的体验。我会说大部分时间应该足够了。

    .NET 和 CLR 还有一个鲜为人知的特性,称为“网络模块”。有关网络模块和程序集(甚至是多文件程序集!)的说明,请参阅此 blog post

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

    如果您担心拥有多个程序集而不是多个项目,那么找出问题所在会很有帮助。 ASP.NET 项目,无论以何种方式,几乎总是被编译成多个程序集。有一些技巧可以避免这种情况,但很少使用(例如 aspnet_compiler 和 aspnet_merge)。

    【讨论】:

      【解决方案5】:

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

      为了能够在 App_Code 下使用不同的语言,您需要 Florim 提到的技术。

      谢谢大家的帮助。

      【讨论】:

        【解决方案6】:

        无法尝试不同的语言

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-14
          • 2013-04-12
          • 2018-07-30
          • 2019-11-05
          • 2010-11-28
          • 1970-01-01
          • 1970-01-01
          • 2012-12-31
          相关资源
          最近更新 更多