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++高手們貢獻點力量吧!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM