【问题标题】:asp.net web application with c# & vb.net both in codebehind代码隐藏中带有 c# 和 vb.net 的 asp.net Web 应用程序
【发布时间】:2010-12-05 13:27:59
【问题描述】:

我们目前有一个 asp.net 网站,其中一些模块是用 VB.Net 开发的,一些是用 C# 开发的(不仅是类,还有单独的 aspx 页面和背后的代码)。我们认为我们想要迁移到 Web 应用程序模型,因为我们需要使用 TFS 实现 CI。

问题:

当我们创建 C# Web 应用程序时,从网站复制文件并说转换为 Web 应用程序,它会给出 Could not Parse errors(可能是因为文件是 vb.net 文件)

当我们创建一个 VB.NET Web 应用程序时,复制文件并说转换为 Web 应用程序它只转换 vb.net 页面并且在发布时在所有 c# 页面上抛出错误说Could not load type

asp.net 网站可以在多种代码隐藏语言支持下正常工作。

非常感谢您的帮助!

【问题讨论】:

  • 当你有一个网站时它工作的原因是因为代码在需要时才被编译,然后每个页面都会单独编译。使用 Web 应用程序,整个东西都被编译成一个 dll,你不能在一个 dll 中混合语言。
  • 我知道投资已经完成,但为什么要使用两种语言?这似乎是一场噩梦。
  • 这将非常有用。我们很想转移到一个 web 应用程序项目,但我们通常是 vb,有很多 c# 页面代码隐藏。 @NerdFury:两个原因:1. 来自互联网,如SqlProfileProvider,博客,论坛代码。 2. 想要使用新语言功能的开发人员,从其他地方复制/粘贴代码(我们的大部分源代码是 vb,但有相当数量的新 c#),不,维护并没有那么糟糕 - .net 开发人员不会通常很难读/写 vb 和 c# IME。

标签: c# asp.net vb.net web-applications projects-and-solutions


【解决方案1】:

您能否将应用程序拆分为 2 个从同一根目录运行的独立 Web 应用程序?只需将已编译的 C# dll 与已编译的 VB.net dll 一起放入 bin 中,然后将所有 aspx 页面放置在您的站点结构所需的任何位置。

我自己没有尝试过,但它应该可以工作。您必须创建一个单独的项目并引用任何数据层等。只需将 C# 代码移动到新应用程序,看看它是如何进行的。不是最好的解决方案,但它胜过从一种语言转换为另一种语言。

【讨论】:

  • 只是添加一些关于什么对我有用的更多信息:两个 Web 应用程序项目(一个用于 vb,一个用于 c#)。让一个项目成为您的“主要”项目 - 创建对另一个项目的项目引用。创建一个构建后事件以将所有 .aspx 从您的辅助项目位置复制到您的主要位置。这应该会让你进入一个好地方。
【解决方案2】:

将所有包含 C# 代码的 App_Code 文件夹名称放入 web.config 中的 CodeSubDirectories 部分

附言这就是DotNetNuke中的做法@

【讨论】:

  • 我应该如何处理一些背后的代码是 vb.net 而一些是 c# 的单个 aspx 页面?
  • 哇...你必须解决这个问题,你不能像那样交换语言
  • 当它是一个 asp.net 网站时它工作得很好。不适用于 asp.net Web 应用程序。有什么方法可以让它在不重新编码我的整个代码以匹配语言的情况下工作?
【解决方案3】:

您可以对网站执行此操作,但不能对 Web 应用程序执行此操作。另请注意,如果您想要或需要这样做,Web 应用程序确实没有任何网站所缺乏的额外功能。 Web 应用程序在某些环境中具有部署优势,但 Visual Studio 2010 和 2012 将轻松发布 asp.net 网站和 Web 应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2011-02-22
    • 2012-05-05
    相关资源
    最近更新 更多