有谁知道从VB6代码转换为C#的方法?
有没有可以为我做这个的工具?
VisualStudio提供(或至少提供)一个向导来执行从VB6到VB.NET的转换(然后可以通过一些工作将其转换为C#,可能由#development的VB.NET < - > C#转换器帮助),但是当我最后一次使用它时,对于任何非平凡的事情都需要做大量的手工工作,所以我怀疑如果这是一个大型和/或重要的应用程序,你可能会更好地手写重写或移植.
它可能会有点厚颜无耻,但你的大脑可能是最好的工具.值得重写.
也许你不需要移植它.VB6可以变成COM组件吗?通往COM的港口,来自C#的电话,及时为Judy法官回家.
作为一个多次这样做过的人,这不是一个简单的过程.您可以按照本答案中的说明使用VB6到VB.Net工具,然后使用Reflector或SharpDevelop转换为C#.随着SharpDevelop的转换,一些警告.它搞砸了所有数组引用并认为它们是函数调用,并且所有逻辑运算符都转换为按位逻辑运算符(并且变为¬ &&).使用Reflector,你会丢失很多东西.此外,Visual Studio转换器在许多大型项目上失败,只是挂起并且永远不会完成.
一旦将代码转换为C#,就必须开始真正的工作.转换最多只能获得50%的转换,你必须修复大量的东西(你会看到你的代码乱丢TODO),重构大量的东西,最后你留下了C#,这是一个你的VB6的代表 - 除非你有非常好的VB6代码,不是你真正想要的地方.你的所有代码都充斥着VB助手,而不是使用正确的DotNet函数(所有字符串函数都是辅助函数而不是类对象,例如0.如果你使用了Variants,那么所有这些都必须被重写.如果你使用了很多API调用,他们往往需要重写.
最终你将获得一个基础,但转换一个大型项目(20-30个表格,30个类,30个模块)可能需要几个月的时间.但是,从头开始重写可能需要两倍的时间,而且会丢失所有业务逻辑.所以,它可以完成(我已经完成了3或4个大型项目),但没有灵丹妙药,没有银弹,而且任何工具都说它会独自为你做这件事.
使用新版本的Visual Studio打开项目,将代码转换为VB.Net,然后下载.Net Reflector以帮助您进行C#转换.
祝好运!
Artinsoft(现在更名为Mobilize.Net)就是这样做的,特别是Visual Basic Upgrade Companion.
然而,即使在使用VBUC之后,仍然需要手动迁移/校对系统的某些部分.但它通常是原始问题的一小部分.由于过去迁移的经验,一些迁移问题已得到解决.
Artinsoft与构建Visual Studio附带的向导的公司是同一家公司,在theraccoonbear的帖子中提到过.但是,如果我没有错误,向导只会将VB6迁移到VB.Net.
完全披露:我为Artinsoft工作