您是否选择不对任何新的 Win32 应用程序使用托管代码?为什么?是否有 CLR 无法提供的您需要的资源?
(注意“新” - 不是对现有代码库的增强。)
一个重要的原因是易于部署。我可以构建一个 Win32 应用程序(使用 MFC 或 WTL 库),并且使用静态链接不依赖于外部库(是的,我知道静态链接不是推荐的方法)。
用户无需先安装其他任何东西即可安装和运行此应用程序:不需要框架库,也不需要 DLL hell。作为比较,请阅读Paint.Net 作者的这些 帖子,了解用户安装 .Net 应用程序的痛苦程度。
我想我写 Win32 的最后一个原因是可移植性。C++ 在所有平台上编译,简单且没有疯狂的依赖。所以对于可移植的代码,我最终还是需要访问 Win32 的 GUI。
我不会绕过 .NET 来进行 Win32 编程。我绕过它们来进行 Java 编程,因为我希望我的应用程序可以在尽可能多的平台上运行。Windows 可能控制着大部分市场,但我看不出有任何理由放弃哪怕是很小的利润机会,尤其是因为我可以比 C++ 或 C# 更快地编写 Java 代码(这是基于我的能力,而不是反映语言本身)。
目前,.NET 和 Win32 都没有给我这种跨平台能力。他们最终可能会使用 Mono,但我仍然认为它还没有做好生产准备,而且我认为它的未来仍然存在问题。
在我的工作场所,有一些老前辈更喜欢使用 MFC,因为这是他们所熟悉的。几天前,我们要创建一个简单的应用程序,自然而然地,他们想在 MFC 中把它拿出来。仅“淘汰”就需要大约一周的时间,而我们需要一天之内的应用程序。我真的不能责怪他们——旧习惯很难改掉。最终我们选择了 C# 并让 MFC 的人摆弄 GUI 设计(他们非常欣赏)。
是和不是。如果我需要做任何 Win32/COM 的事情,我会使用 C++/CLI。C++/CLI 很棒。我们的 UI 完全是 .NET,但有时我们确实需要直接使用 C++。