8

正在寻找一些方法来将现有的大型 ASP.NET VB.NET 项目逐步转换为 C#,同时仍能够将其部署为单个 Web 应用程序(目前每周部署一次)。

我的想法是创建一个新的 C# ASP.NET 项目并慢慢移动页面,但我从未尝试过这样做并在部署期间以某种方式将其与另一个 ASP.NET 项目合并。

(澄清:大型 ASP.NET VB.NET 项目在 VS IDE 中绝对是狗……)

有什么想法吗?

4

10 回答 10

5

从业务逻辑开始,然后按照自己的方式进入页面。将您能做的一切封装到 C# 库中,您可以将其添加为对 VB.NET 站点的引用。

完成所有后端的移植和测试后,您就可以开始制作单独的页面,但我建议您在完成所有转换之前不要推出。

于 2008-09-18T14:03:00.057 回答
4

您可以保留包含 VB 代码和 C# 代码的 App_Code 目录。如此有效,当您有空闲时间转换它时,您可以非常缓慢地完成它。

我目前在我的 App_Code 目录中同时拥有 VB.Net 和 C# 代码,在我的业余时间我转换为 VB.Net 代码,或者任何时候我必须返回到带有 VB.Net 的页面并将其弄乱我将其转换为 C#。

当 Easy Peasy 和 Microsoft 允许您在同一个应用程序上同时拥有 VB.NET 和 C# 时,他们做得更好。这是他们可以在整个应用程序制作过程中实施的最佳想法之一。

如果您想在一个目录中添加两个代码目录,请将其添加到您的 Web.config

<compilation>
<codeSubDirectories>
    <add directoryName="VB_Code"/>
    <add directoryName="CS_Code"/>
</codeSubDirectories>
</compilation>

然后在 App_Code 目录中添加一个名为 VB_Code 的文件夹和另一个名为 CS_Code 的文件夹。然后把你所有的 vb/C# 代码扔到你的文件夹和你的好。

于 2008-09-18T14:07:24.117 回答
3

一个喜欢的端口我拿它吗?我真的不明白这一点以及你会从所有的努力中获得什么。也许编写任何新功能或将缓慢/糟糕的现有逻辑/服务层重构到 c# 中,但至于网页,我看不到 80/20 的好处。

于 2008-09-18T13:58:38.740 回答
1

我已经成功地使用Reflector(它是免费的)提取了 vb 项目的 dll,并将代码查看为 C#。局部变量并不总是翻译,但您可以随时比较翻译和重构内容。

于 2008-09-19T04:35:34.390 回答
1

将旧的东西保留在 VB 中。C# 中的所有新东西。过渡可能很慢,但您不会浪费时间。在空闲时间,更改 C# 中的内容。

于 2008-09-18T14:02:40.713 回答
1

我通过执行以下操作在一个项目中做到了这一点:

  1. 创建 C# 类库
  2. 从 VB Web 应用程序引用 C# 类库
  3. 在 C# 库中创建类后面的代码
  4. 更新aspx/ascx文件中的“Inherits”属性引用C#类(这个文件在原VB工程中仍然存在)

它工作得有些好;有时有点痛苦,因为您现在必须浏览多个项目才能查看单个页面/控件,但它确实让我做您想做的事情。

于 2008-09-18T14:04:56.883 回答
1

您可以简单地在解决方案中创建一个新的 c# 类库项目。在这里一次重新编码几个类,然后替换主项目中的 vb 类。

但老实说,我同意我看不到好处,除非您尝试学习 c# 或者只是真的不喜欢 vb 或者只是无聊。

于 2008-09-18T14:06:29.173 回答
1

尝试#开发。我认为这是将任何 .net 支持的语言转换为任何 .net 支持的语言的最佳方式。

其他工具仅转换代码,但这会转换整个项目。

于 2011-06-19T19:35:30.347 回答
0

如果你有 179 美元,你就完成了。

当然,也有免费软件转换器可用。

于 2008-09-18T18:36:30.850 回答
0

可以办到。好吧,我希望它可以像我在旧的 ASP.net 应用程序上一点一点地做一样。您一次只能更改超过 1 个网络表单。您可能会遇到困难的是,我似乎无法在应用程序代码文件夹中使用混合语言,因为它们是一起编译的。

于 2008-09-18T14:00:42.777 回答