我正在构建一个c#app,旨在复制和增强多年前开发的VB6应用程序的功能。 我的问题是旧应用程序中的一个模块做了一些复杂的事情,并试图从规格开始复制这对我来说是一个很大的痛苦。即使这听起来像是最好的主意。
我的问题是:有没有办法可以保留旧的VB模块并将其集成到c#app中,这样我就不必重写所有内容了?
谢谢!
答案 0 :(得分:3)
是。您可以将模块转换为COM对象,.Net将很乐意调用COM对象。根据您现在所拥有的内容,您可能需要找到Visual Studio 6的副本才能实现(如果您有订阅,它仍可在MSDN上使用)。为了向您提供更准确的说明,我们需要查看更多代码。
答案 1 :(得分:3)
Visual Studio有一个向导,允许您将VB6转换为VB.NET,然后您可以在C#项目中引用它并使用。但是,这个迁移工具不再随Visual Studio 2010一起提供(它是在旧版本中提供的)尽管如此,通常需要进行大量的手动修改工作,通常最好手动重写它,这可能会导致更高无论如何,质量代码。我给你的建议是重写代码,你可以进行修改并确保它正常工作而不必去COM / Interop路线,但也不一定避开那个选项。如果重写所有代码确实是一个问题,那么互操作就是一个解决方案。
答案 2 :(得分:0)
您可以使用COM
或将模块导出为DLL。以下是关于VB6 and COM的一些信息。
答案 3 :(得分:0)
理论上是,将其转换为com模块,并从c#代码中调用它。这是否更容易,我不确定。
问题是这个问题不会消失,如果模块或接口需要进行更改,那么有人必须这样做。如此实际的是,但要仔细考虑你在做什么。
答案 4 :(得分:0)
您可以将现有的vb代码迁移到vb.net并将其编译为单独的程序集,并将其添加到C#应用程序中。
答案 5 :(得分:0)
VS2010(可能是2008年)不能在同一解决方案中同时支持VB和C#项目吗?如果我没弄错的话,他们可以。所以你实际上可以将你的VB6代码转换成VB.Net,并在你的解决方案中使用C#的东西。