asp.net - 将 IE 扩展移植到 WebAssembly
问题描述
我使用 Visual Studio .Net 4.5.2 Framework 为 C# 中的 Internet Explorer 开发了一个扩展,我想将它移植到 Chrome 和 Edge (Chromium)。这是一个相当复杂的扩展,包含我开发的 6 个定制 C# 库,这些库又使用了许多系统库,包括 Microsoft.mshtml 和 System.Windows.Forms。我希望构建为 WebAssembly 将被证明是一个可行的解决方案。
我尝试使用带有 Windows.Wasm 的 Visual Studio 2019 以及 Mono.Wasm 移植到 .Net 5.0,但这些只是引发了一系列兼容性挑战。
谁能推荐我应该看看的替代方法。我正在考虑尝试 Blazor(尽管这似乎更面向服务器端而不是客户端)、Ooui.Wasm 和 Uno 平台。
问候,霍华德
解决方案
Blazor 有两种不同类型的项目,一种是 Blazor Server App,显然是服务器端,另一种是 Blazor WebAssembly App,可用于开发客户端浏览器扩展。我也打算使用 Blazor 创建浏览器扩展,因此我创建了一个包来帮助其他人也实现同样的目标。随时查看我在GitHub上的 repo 以了解如何操作。此包包括与 WebExtensions API 交互以实现跨浏览器兼容性的能力。Mozilla 开发的浏览器 APi polyfill 也已加载,因此您也可以在 Chrome 中使用 WebExtensions API。
但是,在您的场景中,无法使用 Blazor 使用 WinForms,因此您必须将它们转换为 Razor 组件。
推荐阅读
- python - 如果您要求整数并且没有得到整数,是否有例外?
- android - 在 Android 中从 Fragment 打开 Activity
- dart - 谁能给我一个想法,将会话超时重定向到颤振的登录屏幕?
- flutter - 尽管 SingleChildScrollView 出现 Flutter 溢出异常
- c# - C#检查字符串是否存在,如果存在则显示该字符串
- python - 对 Flask 后端响应正文的获取请求为 null 且没有 cors 并且在没有 no-cors 的情况下失败
- python - python中matplotlib中的绘图大小= 1/{N∗⌈log2N⌉∗[(1/70)/60]}?
- ios - 需要在Objective C中获取Grib File数据
- java - char 值如何传递给 int 参数的方法
- node.js - 更新 MongoDB 中的子子数组项