C#桌面开发的未来WebWindow
zeje 人气:0
[TOC]
# WebWindow
WebWindow是跨平台的库。 Web Window的当前实验实现可在以下平台上运行:
* Windows – 需要基于Chromium的Edge
* Linux – 使用WebKit
* Mac – 需要Safari
## 源码
https://github.com/SteveSandersonMS/WebWindow.git
Zeje Fork的分支:
## 作者博客
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/businesshttps://img.qb5200.com/download-x/download (建议)
中间可能在升级的时候,要求你更新操作系统才可以安装(安装过程略)
![默认浏览器](https://img2018.cnblogs.com/blog/87284/202003/87284-20200313125940261-1869574483.png)
![基于 Chrome的 Edge](https://img2018.cnblogs.com/blog/87284/202003/87284-20200313125940004-311917660.png)
## 体验
本人的体验环境是:
* Window 10
* Visual Studio 2019
* 基于 Chrome的 Edge
### 体验方式一:
* 创建一个.net core 3.0的控制台程序
* 安装WebWindow Nuget包
* 加入启动代码
``` csharp
using System;
using WebWindows;
namespace ZejeDesk.WebWindowApp
{
class Program
{
static void Main(string[] args)
{
var window = new WebWindow("择捷工作室WebWindow体验");
window.NavigateToString("netstandard2.1
```
为
``` xml
net45;net451;net452;net46;net461;net471;netstandard2.1;netcoreapp2.0;netcoreapp3.0
```
处理掉部分代码的问题,如:
> net45下包`System.Runtime.InteropServices.RuntimeInformation`的引用问题
* 在`WebWindow.Dev`解决方案中,新增.net framework 4.5控制台应用程序`ZejeWebWindowApp`
* 在`ZejeWebWindowApp`中加入WebWindow项目引用
*
![Zeje Web Window App](https://img2018.cnblogs.com/blog/87284/202003/87284-20200313125937937-1314557497.png)
* 加入启动代码
``` csharp
using System;
using WebWindows;
namespace ZejeWebWindowApp
{
class Program
{
static void Main(string[] args)
{
var window = new WebWindow("择捷工作室WebWindow体验");
window.NavigateToString("
择捷工作室!
WebWindow体验(该桌面窗口为.NET Core 3.1应用)
");
window.WaitForExit();
}
}
}
```
* 体验效果
![体验效果1](https://img2018.cnblogs.com/blog/87284/202003/87284-20200313125939704-308788564.png)
### 体验方式二:
#### 预期目标:
1. 不需要依赖.net core 3.0
2. 仅仅依赖.net framework 4.5便可。
* Clone下源码到本地
![克隆 Web Window源码](https://img2018.cnblogs.com/blog/87284/202003/87284-20200313125939439-1688820785.png)
* 打开WebWindow.Dev解决方案
![打开解决方案](https://img2018.cnblogs.com/blog/87284/202003/87284-20200313125939155-1103438999.png)
* 捣鼓编译源码的事情
* 可爱又可恨的WebWindow.Native
* 可爱:它实现了WebView的调用;
![](https://img2020.cnblogs.com/blog/87284/202003/87284-20200313132625534-1713847887.png)
* 可恨:对于国情来说,它并不完美;
* 我们需要它对更多的浏览器的支持,特别针对双引擎浏览器
* 对于windows底层方法的调用,并不一定需要原生支持,特别是一些简单的操作,js + http + webapi的方式完全可以胜任。
![](https://img2020.cnblogs.com/blog/87284/202003/87284-20200313132648508-1313913215.png)
* 编译的前提条件:WebWindow.Native
![工具获取更多](https://img2018.cnblogs.com/blog/87284/202003/87284-20200313125938774-1367625821.png)
* 安装C++桌面开发支持
![安装 C Plus桌面开发支持](https://img2018.cnblogs.com/blog/87284/202003/87284-20200313125938497-938064543.png)
* 使用x64编译WebWindow.Native
捣鼓这个最麻烦,每个人的环境不一,像我这等C++丢了12年的人(大一学过)来说,报include异常后完全不知道怎么搞(请教了会`C++`的朋友也无果),后来好像是更新了操作系统的补丁,重启后就能正常编译了。
![使用x64编译 Web Window Native](https://img2018.cnblogs.com/blog/87284/202003/87284-20200313125938185-1573001583.png)
* 把WebWindow改成面向多目标框架的项目
修改WebWindow.csproj文件
``` xml
择捷工作室!
WebWindow体验(该桌面窗口为.NET FrameWork 4.5应用)
");
window.WaitForExit();
}
}
}
```
* 修改项目配置
![Zeje Web Window App X64](https://img2018.cnblogs.com/blog/87284/202003/87284-20200313125937642-1969455784.png)
* 体验效果
![Zeje Web Window App效果](https://img2018.cnblogs.com/blog/87284/202003/87284-20200313125937211-73832771.png)
## 遗留的问题
* 怎么兼容国产浏览器?
* 怎么支持x86?
* 其他需要调用windows底层方法如何处理?
这些都不是不懂`C++`的我能左右的,希望`.net`的`C++`高手们贡献点力量吧!加载全部内容