我有一个VB应用程序。客户端希望将其转换为.net应用程序。我想继续将其转换为C#windows应用程序。但我不确定我将面临的挑战。
一种方法是只了解VB代码并重写C#或VB .net
中的所有模块我不知道的另一种方法是基于工具的转换。
我可以知道你将如何接受这种转换吗?您希望转换哪些类型的工具以及您可能面临的挑战?
为简单起见,我们假设我们要将一个简单的VB转换为VB .net或c#windows应用程序。
您更喜欢VB到VB.net的转换还是VB到C#的转换。即使你可以部分回答这个问题,我也会很感激。
答案 0 :(得分:2)
你可以看一下这篇文章,值得一读:Converting VB6 to VB.NET, Part I
我的建议是翻译用户实际使用的部分,按照他/她的要求添加新功能。
答案 1 :(得分:1)
有许多在线代码转换器可用于简单地转换语法。一些例子是:
这些转换器不会处理所有问题。例如,数组访问在VB中使用(),与方法访问器相同,而在C#中是[]。这会产生问题,因为转换器不知道哪些是方法,哪些是数组。
显然,最大的问题是旧VB和.NET之间的差异。即使你翻译,你也可能会遇到很多关于过时的弃用方法,限制等问题。
我建议在使用代码转换器之前重新评估您的应用程序,以便了解所期望的更改。
答案 2 :(得分:1)
只是一篇博文,内容涉及从VB6迁移到VB.NET和C#的一些提示:
VB6 to VB.Net Upgraded Upgrade Help – Yes, you are not alone (in your VB6’ness)…
答案 3 :(得分:1)
我会选择C#因为我对这种语法更熟悉。我认为你应该选择你最熟悉的语言。
我曾经使用过pre .Net VB,并且我已经完成了一些VB.Net编码,但这两种语言之间的相似性并不足以指导这种选择。
在任何情况下,它可能更多地是重写而不是端口,因为GUI,DB,文件访问等方面存在许多技术差异。
我希望您现有的产品结构合理,这将有助于此过程。如果不是,那么在移植/重写之前,值得花时间重构或重组(称之为你想要的)。
答案 4 :(得分:1)
在我开始之前: VB不是面向对象的语言...... C#和VB.NET都是! 至关重要的是你深入思考 - 开发面向对象与程序编程完全不同。你可以让你的新系统代码看起来像你当前的 - 但你真的不应该。如果你不想学习面向对象并改变你的应用程序的方式,你就不应该开始这个项目,因为你会浪费时间和金钱,而且可能会失败。 ...毕竟你不要把笔浸入油墨中以便重新填充它 - 旧的方法很有意思,但技术在这里是有原因的。 但我不确定我将面临的挑战。 ....你应该学习面向对象。在那之后使用正确的问题很容易得到答案微软不再支持VB,尤其是当客户要求你移动它时,你不应该留下来。这并不容易 - 但你没有选择。
一种方法是只了解VB代码并重写C#或VB .net中的所有模块 ....这是唯一的方法 - 当事情开始崩溃时 - 你不会指责转换器 - 你有责任理解系统中的每个功能
我不知道的另一种方法是基于工具的转换。 ......其他人为您提供了工具 - 它对语法有好处,但对整体功能有风险
我可以知道你将如何接受这种转换吗?您希望转换哪种类型的工具以及您可能面临的挑战? ...使用Visio word excel或更多专业工具(如UML图表应用程序)映射您的函数
为简单起见,我们假设我们要将一个简单的VB转换为VB .net或c#windows应用程序。 ...构建表单很容易,组件通常更强大
您更喜欢VB到VB.net的转换还是VB到C#的转换。 ...选择C#vb让人们认为他们仍然处于某种虚拟环境...... C#让你明白你处在一个不同的世界。但重要的是,您将知道Microsoft决定将这两种语言对齐以具有相同的功能。
从一种语言到另一种语言都有很好的转换器。
答案 5 :(得分:0)
根据我的经验,最好的方法是重写应用程序。
每当我尝试使用自动转换器时,它都会失败。 VB中有许多东西不能很好地转换(如控制数组)。
答案 6 :(得分:0)
取决于应用程序的大小,GUI的大小和应用程序的非GUI部分,应用程序使用的外部库/组件以及您或您的团队所使用的语言(C#或VB.NET)更舒服。
如果您可以在旧的VB应用程序中隔离很多非GUI代码,那么“VB到VB.NET”的道路通常可能是最好的,因为你可以移植大量的机会并不错。旧代码只有很小的变化。在所有其他情况下,C#或VB.NET几乎都是相同的,因此请选择您最有经验的语言/大多数现有代码/团队中最专业的知识。
答案 7 :(得分:0)
最好的方法是重写应用程序。我认为使用vb.NET更好,因为语法类似于vb。如果您想尝试转换工具,我建议使用VB Migration Partner。 www.vbmigration.com