您将使用哪种 C# 项目类型来重新开发 MFC C++ activex 控件?

Posted

技术标签:

【中文标题】您将使用哪种 C# 项目类型来重新开发 MFC C++ activex 控件?【英文标题】:Which C# project type would you use to redevelop a MFC C++ activex control? 【发布时间】:2010-09-08 12:00:08 【问题描述】:

查看 VS2008 中的 C# 项目模板,提供 WPF 用户控件库、WPF 自定义控件库和 Windows 窗体控件库。如果您想将用 C++ 编写的旧版活动控件转移到 C# 和 .NET 的世界中,您会使用哪一个?

【问题讨论】:

【参考方案1】:

听起来你正试图同时做几件不同的事情:

    将您的代码迁移到在较新版本的 Visual Studio 中构建。 将您对技术的使用迁移到更新的技术(ActiveX 到 .net) 迁移您的语言(c++ 到 c#)。

如果您的代码库很小,您可能也可以从头开始,并根据需要将功能移植到新的代码库中。

对于更大的代码库,您需要意识到这在工作量和缺陷率方面都是一项昂贵的任务。

订单可能是:

    将您的代码导入到较新版本的 Visual Studio 中。得到它编译。查看每个项目的项目设置。 重构代码以尽可能隔离 mfc 和 activex 代码。遵循良好的重构实践,尤其是在开始之前没有太多单元测试的情况下。 考虑用 .net 替换您的 ActiveX 层。 考虑哪个 GUI 工具包最适合替换 MFC。 语言 - 考虑首先迁移到托管 c++。 考虑从托管 c++ 迁移到 c#。

最重要的是能够证明做上述所有事情的合理性!

【讨论】:

【参考方案2】:

没有可以为您执行此操作的项目模板。您不妨阅读并从用户控件开始。

【讨论】:

【参考方案3】:

您必须考虑将托管该控件的目标应用程序。如果它是一个业务应用程序,我 heard 表示 WPF 并没有提供比 Forms 更大的优势。然而,根据this 博客条目,作者认为杀手 WPF 是一个 LOB 应用程序,它利用 WPF 提供的图形功能进行数据可视化。

最后我猜这是一个成本/收益分析。您是走 WPF 路线并为图形数据可视化的未来利益付出学习曲线的成本,还是坚持久经考验的方法并冒着开发过时应用程序的风险。

【讨论】:

以上是关于您将使用哪种 C# 项目类型来重新开发 MFC C++ activex 控件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字节数组从 c# 传递到 MFC ActiveX

在 WinCE 平台上绘图,哪种语言更快:MFC VC++ 或 C#

C# 的哪种数据类型相当于 SQL Server 中的钱? [复制]

使用 C++/MFC 和 C# 中的插件扩展 C++/MFC 应用程序

您将哪种 Java 类型用于 JPA 集合,为啥?

MFC 应用程序中的 C# 控件