【问题标题】:How can I have c# and vb.net code behinds in the same ASP.NET Web Forms application?如何在同一个 ASP.NET Web 窗体应用程序中包含 c# 和 vb.net 代码?
【发布时间】:2015-01-12 01:39:22
【问题描述】:

我继承了一个巨大的网络表单应用程序,它是从经典的 asp 网站自动生成的。

这留下了嵌入代码的 .aspx 页面(没有单独的代码隐藏) 已经进行了一些现代化尝试,因此一些页面存在 C# 代码。这些与嵌入 vb.net 的页面混合在相同的文件夹中。

我正在尝试将代码库变成某种形状...我的第一步是将嵌入式代码移动到后面的代码中...但是我不能,因为编译器期望代码隐藏在 C# 和无法识别我创建的代码隐藏文件(Visual Studio 也不会在其 GUI 中合并这些文件)。

我可以在这里采取哪些步骤?如果我必须将 c# 文件拉到单独的文件夹中,我可以这样做,但我不确定我是否可以让一个单独的项目工作,它会改变部署步骤(我认为)

目的是在某种测试框架下获取逻辑,以便我可以进行重构并安全地进行更改。

【问题讨论】:

  • 我相信如果您在 Visual Studio 中将您的网站作为网站打开(通过“打开网站”并指向本地文件夹或 IIS 虚拟目录)-您应该能够编译和运行 mix-和匹配的代码。
  • 好吧,我可以这样打开它......然后它无法完全构建!是否有博客可以帮助我了解正常打开或作为网站打开的区别?
  • 我可能错了,但根据经验,每个项目都需要使用相同语言的所有代码文件。 aspx 文件不同,因为它们是在访问页面时编译的。
  • 是否可以使用在线实用程序之一将 VB 代码转换为 C#?
  • 只有C#和VB.NET代码并排使用网站,见stackoverflow.com/a/2339827/1314859

标签: c# vb.net webforms code-behind legacy-code


【解决方案1】:

单个项目必须有一种语言。 (文件夹几乎无关紧要,除了确保您保持命名空间正确。)但是我已经成功地为 VB.Net aspx 项目创建了一个单独的 C# 项目,其中页面中的代码非常交织,正如您所描述的.我这样做的方式,效果很好,是

  1. 使用业务逻辑创建一个单独的 C# 项目
  2. 从 VB aspx 页面调用 C# 业务逻辑

每个项目都编译成自己的程序集(dll),并且很容易从另一个项目中调用一个项目中的函数。我在部署方面没有遇到麻烦(我记得反正)。如果您的项目“庞大”并且包含许多文件夹,那么它可能无论如何都应该分成单独的项目。祝你好运! :)

【讨论】:

    【解决方案2】:

    这是不可能的。当编译器构建您的项目时,它需要一种语言。您需要将 VB.Net 保留在 aspx 中(已解释而非编译),或者将这些 VB.Net 页面的代码隐藏文件移动到您的主应用程序中引用的另一个程序集中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-12
      • 2010-12-05
      • 2014-08-09
      • 2018-01-05
      • 2012-04-18
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多