我(最终!)在将VB6应用程序转换为.NET(C#)的过程中。我想使用Winforms(我希望在此之后快速切换到MVC并使其成为Web应用程序)。我们最近在Server 2012上的VB6应用程序遇到了一些严重的奇怪问题,我怀疑它可能是由MSCOMCTL.OCX引起的(实际上这促使了重写)。我越了解这个OCX,就越想远离它。我不知道如何确定.NET Winforms框架是否使用这些旧的ActiveX组件。我希望有人知道或者可以指出我的方向来找出答案。我想避免WPF的混乱学习曲线。
答案 0 :(得分:3)
没有
OCX扩展名表示ActiveX控件。它们确实被经典的基于COM的VB系统使用(最新的,最好的版本是VB 6),但它们不被.NET Framework使用。 WinForms提供了自己不相关的常用控件实现。所以相反,你会有一套全新的bug来应对!
请注意you can use ActiveX controls with WinForms,如果您尝试使用某些自动转换向导尝试将VB 6项目转换为.NET项目,这可能是您最终无意中所做的事情。我不确定,这取决于你的巫师的质量。通常,没有理由使用MSCOMCTL.OCX,因为所有常见控件都是由WinForms提供的,但如果您的应用程序依赖于没有等效的其他ActiveX控件,则转换向导很可能会尝试重用它们。
(我不知道你对Server 2012上的MSCOMCTL.OCX有什么问题。应该没有任何重大问题。在新版本的Windows上,VB 6应用程序继续正常运行。请确保你正在运行来自cumulative update rollup的文件的最新版本。对于一个简单的错误进行大量重写对我来说似乎有些过分。)