zoukankan      html  css  js  c++  java
  • C#桌面开发的未来WebWindow

    WebWindow

    WebWindow是跨平台的库。 Web Window的当前实验实现可在以下平台上运行:

    • Windows – 需要基于Chromium的Edge
    • Linux – 使用WebKit
    • Mac – 需要Safari

    源码

    https://github.com/SteveSandersonMS/WebWindow.git

    Zeje Fork的分支:https://github.com/zeje/WebWindow.git

    作者博客

    https://blog.stevensanderson.com

    基于Chromium的Edge

    因为大众用的还是Windows操作系统(如win 7,win 10)。为了面向大众,我们在Windows 10下体验下WebWindow。现在下载并安装基于Chromium的Edge:

    下载地址:https://www.microsoft.com/en-us/edge
    下载地址:https://www.microsoft.com/en-us/edge/business/download (建议)

    中间可能在升级的时候,要求你更新操作系统才可以安装(安装过程略)

    默认浏览器

    体验

    本人的体验环境是:

    • Window 10
    • Visual Studio 2019
    • 基于 Chrome的 Edge

    体验方式一:

    • 创建一个.net core 3.0的控制台程序

    • 安装WebWindow Nuget包

    • 加入启动代码

      using System;
      using WebWindows;
      
      namespace ZejeDesk.WebWindowApp
      {
          class Program
          {
              static void Main(string[] args)
              {
                  var window = new WebWindow("择捷工作室WebWindow体验");
                  window.NavigateToString("<h1 style="text-align:center;">择捷工作室!</h1> <div style="text-align:center;">WebWindow体验(该桌面窗口为.NET Core 3.1应用)</div>");
                  window.WaitForExit();
              }
          }
      }
      
    • 体验效果

      体验效果1

    体验方式二:

    预期目标:

    1. 不需要依赖.net core 3.0
    2. 仅仅依赖.net framework 4.5便可。
    • Clone下源码到本地

    克隆 Web Window源码

    • 打开WebWindow.Dev解决方案

    打开解决方案

    • 捣鼓编译源码的事情
      • 可爱又可恨的WebWindow.Native
        • 可爱:它实现了WebView的调用;

    • 可恨:对于国情来说,它并不完美;
      * 我们需要它对更多的浏览器的支持,特别针对双引擎浏览器
      * 对于windows底层方法的调用,并不一定需要原生支持,特别是一些简单的操作,js + http + webapi的方式完全可以胜任。

    • 编译的前提条件:WebWindow.Native

      工具获取更多

    • 安装C++桌面开发支持

      安装 C Plus桌面开发支持

    • 使用x64编译WebWindow.Native

      捣鼓这个最麻烦,每个人的环境不一,像我这等C++丢了12年的人(大一学过)来说,报include异常后完全不知道怎么搞(请教了会C++的朋友也无果),后来好像是更新了操作系统的补丁,重启后就能正常编译了。

      使用x64编译 Web Window Native

    • 把WebWindow改成面向多目标框架的项目

    修改WebWindow.csproj文件

     <TargetFramework>netstandard2.1</TargetFramework>
    

    <TargetFrameworks>net45;net451;net452;net46;net461;net471;netstandard2.1;netcoreapp2.0;netcoreapp3.0</TargetFrameworks>    
    

    处理掉部分代码的问题,如:

    net45下包System.Runtime.InteropServices.RuntimeInformation的引用问题

    • WebWindow.Dev解决方案中,新增.net framework 4.5控制台应用程序ZejeWebWindowApp

    • ZejeWebWindowApp中加入WebWindow项目引用

    Zeje Web Window App

    • 加入启动代码
    using System;
    using WebWindows;
        
    namespace ZejeWebWindowApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                var window = new WebWindow("择捷工作室WebWindow体验");
                window.NavigateToString("<h1 style="text-align:center;">择捷工作室!</h1> <div style="text-align:center;">WebWindow体验(该桌面窗口为.NET FrameWork 4.5应用)</div>");
                window.WaitForExit();
            }
        }
    }
    
    • 修改项目配置

    Zeje Web Window App X64

    • 体验效果

    Zeje Web Window App效果

    遗留的问题

    • 怎么兼容国产浏览器?
    • 怎么支持x86?
    • 其他需要调用windows底层方法如何处理?

    这些都不是不懂C++的我能左右的,希望.netC++高手们贡献点力量吧!

    作者:哲智(Zeje)
    出处:http://www.cnblogs.com/zeje/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    微信公众号项目部署
    数据库存入年月日时分秒类型时间问题
    路径问题
    常用DOS命令
    解决Maven下载慢的问题
    害人不浅的数学翻译
    Webpack4 踩坑记
    React 踩坑记
    what's the problem of Object oriented programming
    为什么JVM调优?
  • 原文地址:https://www.cnblogs.com/zeje/p/12485865.html
Copyright © 2011-2022 走看看