【问题标题】:How to convert .NET WPF application to Windows Forms?如何将 .NET WPF 应用程序转换为 Windows 窗体?
【发布时间】:2011-02-01 12:56:56
【问题描述】:

我们创建了一个设计精美的 .NET WPF 桌面应用程序。我们正在使用 InnoSetup 安装应用程序,如果 .NET 3.5 不存在,它会自动安装它。但是,下载 .NET 3.5 的包很大,我们发现大约 30% 的用户因此没有完成安装。

显而易见的解决方案是使用 Windows 窗体将所有内容重新编码为 .NET 1.1,但这是一项需要几周时间的重大开发。此外,如果同时支持这两个版本(并使用 innosetup 选择正确的版本),我们将面临两难选择,还是一起放弃 WPF。

有没有什么简单的方法可以将 WPF 转换为 Windows 窗体?或者我们有其他选择吗?

谢谢!

【问题讨论】:

  • 我假设您的意思是 .NET 2.0 而不是 .NET 1.1?您是否已经看过 .NET 3.5 客户端配置文件?它包括一组减少的程序集,这些程序集通常是客户端 (WPF-) 应用程序所需的:blogs.windowsclient.net/trickster92/archive/2008/05/21/…
  • @divo:Janusz 可能确实是指 .NET 1.1,因为它比 2.0(稍微)更普遍,后者仍然有一个 23 MB 的安装程序。
  • @MusiGenesis:我不这么认为。很久没看到没有安装 .NET 2.0 的机器了。 .NET 2.0 附带 WinXP SP3、Vista 和 Win7(其中包括 3.5 SP1),而 .NET 1.1 从未包含在任何 Windows 版本中。
  • @divo:.NET Framework 1.1 包含在 Windows Server 2003 中
  • Janusz 需要针对 .NET 1.0 而不是 1.1,否则他会错过 4 个卡在 1.0 上的客户。

标签: .net wpf winforms


【解决方案1】:

将 WPF 转换为 WinForms 并非易事,当然没有自动化的方法,如果您还想回到 .net 1.1,您将失去一大堆其他功能,如泛型等,所以它不仅仅是您将要更改的 UI。

最好的解决方案是改为以.net client profile 为目标。它的下载量要小得多。

如果您可以等待几周,.net 4.0 中的客户端配置文件具有更好的离线安装和平台支持。请参阅herehere

【讨论】:

  • 3.5 大约是 28mb(但它只是一个网络安装 - 阅读链接了解它是如何工作的,它最终可能会退回到完整安装),4.0 是一个适当的可再分发下载并且是 30- 50mb 取决于平台。
  • 感谢大家的所有想法。它非常有帮助。我不知道 .net 客户端配置文件,这可能可以改善下载到安装的转换,而无需为 .NET 1.1/2 重做应用程序的痛苦我将尝试使用 .net 客户端配置文件并将新版本检查为好吧。
【解决方案2】:

您可以使用 .NET 3.5 SP1 中引入的.NET Client Profile,以减少在未安装 .NET Framework 3.5 的计算机上运行应用程序所需的下载大小。

.NET 客户端配置文件大小约为 28 MB,如 here 所述。

另外,查看this site 以确定在您的系统上获取 .NET Framework 所需的最小、最简单的下载。

【讨论】:

    【解决方案3】:

    既然您说“设计精美”,我将假设您广泛使用了 WPF 的 UI 元素。如果是这种情况,请忘记将 UI 移植回 WinForms。

    程序的非 UI 部分可以很容易地向后移植(可能根本不做任何更改)IFF(当且仅当)它们不引用任何 2.0 后的东西(例如 LINQ)。

    【讨论】:

    • 即使他们使用 LINQ,也可以通过使用 C# 3.0 编译器以 2.0 框架为目标并将 LINQ 实现(例如 Mono 的)与应用程序一起轻松地向后移植。但是是的,所有 UI 代码都必须为 WinForms 端口重写。
    • 如果没有阳光,我可能会质疑你在这里使用“容易”这个词。 :)
    • 我实际上只需将应用程序(不是 WPF)从 3.5 移回 2.0。完全去掉 LINQ 更容易,因为推动它包含的开发人员只使用它来代替 for 循环。
    • 它主要是 WPF,包括动画。我认为如果没有 WPF 就很难做到这一点,但高下载到安装转换的好处可能会超过让应用程序带有动画的好处。
    【解决方案4】:

    你试过Client only framework subset吗?您只需在项目设置中选中一个框,它将使用精简的 26 mb 版本的 .net 3.5。它也被称为客户资料
    (来源:msdn.com

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      • 2011-09-08
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多