【问题标题】:Is there a way to convert Windows Desktop applications to Universal UWP and Vice Versa?有没有办法将 Windows 桌面应用程序转换为 Universal UWP 和 Vice Versa?
【发布时间】:2017-11-18 16:33:56
【问题描述】:

在 Visual Studio 中,我试图决定应该从哪种类型的应用程序开始。我想让它在尽可能多的设备上可用。

如果我制作 Windows 桌面应用程序 (.NET/WPF),我可以将其转换为 UWP,但它只针对桌面应用程序,这对设备而言毫无意义。

但是,如果我制作 UWP,它可以与 Microsoft 设备一起使用,但不适用于运行 Windows 10 之前的 Windows 的设备。很多人仍在使用旧版本的 Windows,我宁愿制作 Windows 桌面应用程序而不是限制用于特定版本的 Windows。

如果能够让它在 Android 等其他设备上运行也很酷。

问题:有没有办法将桌面应用程序转换为通用 UWP(有或没有代码)?有没有办法将通用 UWP 转换为桌面应用程序(或使其在较旧的 Windows 机器上运行)?如果不是,最好的应用程序类型是什么?为什么?

另外,我应该使用其他我没有想到的应用程序类型吗?

注意:Microsoft Project Centennial 将桌面应用程序转换为 UWP,但它们仅适用于桌面计算机。

【问题讨论】:

  • “桌面应用程序”到底是什么意思? UWP 应用桌面应用。你的意思是原生Win32? .NET WinForms 还是 WPF?不要忘记,如果您正确地构建您的软件,那么您可以轻松支持不同的前端,如果您做得对,甚至可以支持 ASP.NET。
  • @Dai 我的意思是 .NET/WPF 应用程序。能否在 Windows Mobile 等其他平台上运行面向桌面的 UWP 应用?
  • WPF XAML 在很大程度上(但不完全)与 UWP XAML 源代码兼容,因此它可能比您想象的要容易。

标签: windows uwp


【解决方案1】:

如果我是你,我会去 UWP 并使用 Xamarin 表单。

使用 Xamarin,您可以编写一个 UWP 应用并部署到 Windows、Android 和 iOS。

【讨论】:

    【解决方案2】:

    您自己已经回答了大部分问题。您有以下选择(考虑到您想继续使用您的 .NET/XAML 技能,因为您提到 WPF 并且没有寻找 Web 替代方案):

    • 在 WPF 中编写桌面应用程序:您希望支持 Windows 7 或需要 UWP 中当前尚不可用的功能(某些 API、沙盒 UWP 等)。正如您所提到的,您可以使用桌面桥将应用程序带到 Windows 10 商店,但缺点是无法在移动设备、HoloLens、Xbox(截至今天)上运行。再说一次,WPF 也不能在这些平台上运行。
    • 在 UWP 中从头开始编写应用程序:在所有可用平台上的 Windows 10 上运行。是的,您会让 Windows 7 用户感到冷遇,但并不是说 Windows 7 已经在 extended support block 中,所以人们必须在某个时候升级。
    • 使用 Xamarin.Forms 从头开始​​编写应用程序,创建在 Windows 7 (WPF)、UWP、Android 和 iOS 上运行的单个应用程序。请注意,现在这是一种有点不同的 XAML 方言,但XAML Standard 正在努力在未来统一这些方言。

    更多的工作是与 .NET Standard 或 PCL 库共享您的大部分代码,并在其上编写多个本机 UI(可以使用 Xamarin 完成)。

    如果您正在寻找长期支持,请选择 UWP(Windows 的前进方向)或 Xamarin.Forms。

    【讨论】:

      【解决方案3】:

      试试微软的Desktop Bridge tool for UWP。使用桌面桥,您可以逐步将代码迁移到通用 Windows 平台 (UWP),以覆盖所有 Windows 10 设备,包括手机、Xbox One 和 HoloLens

      使用桌面桥接工具,您可以

      • 将 MSI 转换为 APPX 包
      • 将您的桌面应用(转换为 APPX 包后)上传到商店
      • 利用 UWP 功能,例如动态磁贴、推送通知等)

      对于 Android 和 iOS 应用,请尝试 Xamarin。 UWP 项目无法转换为 xamarin 项目。你必须编写单独的项目。我建议你试试Xamarin.Forms,它可以让你用共享代码煮UWP、Android和iOS应用。

      【讨论】:

        猜你喜欢
        • 2011-04-23
        • 2017-12-11
        • 2013-09-05
        • 2016-12-23
        • 2012-05-30
        • 2011-07-29
        • 1970-01-01
        • 2016-06-02
        • 1970-01-01
        相关资源
        最近更新 更多