查看原文
其他

C#桌面开发的未来WebWindow

DotNet 2021-09-23

(给DotNet加星标,提升.Net技能

转自:zeje
cnblogs.com/zeje/p/12485865.html

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、不需要依赖.NET Core 3.0


2、仅仅依赖.net framework 4.5便可。


  • Clone下源码到本地



  • 打开WebWindow.Dev解决方案



  • 捣鼓编译源码的事情


可爱又可恨的WebWindow.Native


可爱:它实现了WebView的调用;




  • 可恨:对于国情来说,它并不完美;


* 我们需要它对更多的浏览器的支持,特别针对双引擎浏览器


* 对于windows底层方法的调用,并不一定需要原生支持,特别是一些简单的操作,js + http + webapi的方式完全可以胜任。



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



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



  • 使用x64编译WebWindow.Native


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



  • 把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项目引用



  • 加入启动代码


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();
}
}
}


  • 修改项目配置



  • 体验效果



遗留的问题


  • 怎么兼容国产浏览器?


  • 怎么支持x86?


  • 其他需要调用windows底层方法如何处理?


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


推荐阅读  点击标题可跳转
.NET Core+Vue后台管理基础框架
ASP.NET Core实现动态Web API分享一个基于.NET Core 3.1开发的模块化项目


看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

好文章,我在看❤️

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存