目前信创热潮开始掀起,而C#很多行业开发的都是桌面端,迁移到网页端常常会因为很多库不支持或者不友好导致项目一直卡着。

最近一直在网上找灵感,偶然发现Web Assembly,一开始我还没不知道这是什么,后面发现目前主流浏览器都支持这一技术。

我们看一下这个Web Assembly简介如下

而后我看了翻阅了众多文档看能不能使用C#来编译Web Assembly,目前C#下Blazor下使用的就是Web Assembly,

但是没看到能单独抽离功能模块出来编译成Web Assembly,随后我请教了一下杨中科老师,杨中科老师分享了一篇他自己写的帖子给我,链接如下

https://www.cnblogs.com/rupeng/p/17107662.html。

随后基于这篇帖子,我开始进行尝试,我是用的前端框架是Vue3+Vite+TypeScript。首先,我们先编写c#代码

  1. 创建一个类库项目

  1. 将项目的csproj文件打开,将Sdk更改为 Microsoft.NET.Sdk.BlazorWebAssembly,如下图所示

  1. 接下来,我们编写两个简单的功能,一个返回当前时间,一个处理加载一张图片处理一下,这里只是简单做测试使用,勿喷

代码编写完成,我们简单生成一下,可以看到在项目的生成目录下有这么一个文件夹

我们将这个文件夹放到前端Vue项目目录中的public下

接下来,我们给Vue项目做一些简单的修改,在index.html中引入blazor.webassembly.js,并添加script代码,启用Blazor,如下图所示

这里我们想要调取C#代码使用的是DotNet这个对象,但是因为我们使用的是Typescript和Vue3,,所以得声明一个这个对象的类型,不然总是会提示红色波浪线,可能会导致后期编译Eslint检测不通过,

所以在src目录下新建Types目录,新建blazor.d.ts文件,代码如下,tsconfig.json也得添加一下你的类型声明文件夹路径

接下来,我们简单调用一下这两个c#方法,如下如所示

调用之后效果如下

这里可以看到获取了当前时间,c#中处理的图片也返回到前端加载出来了,至此,实现了c#编写功能编译成Web Assembly提供给前端调用,

至于为什么会有这样的想法,一个是因为前端很多东西不友好,还有就是喜欢钻研点新东西。

最后,还有一点需要注意,这里C#中使用SkiaSharp来处理图片,添加一下以下两个依赖,不然会报错ShipSharp.SKImageInfo初始化失败。

好了,到这里简单的一次试验就成功了。本篇博客测试引用帖子如下

https://blog.csdn.net/simpleman2000/article/details/134592252,

https://www.cnblogs.com/rupeng/p/17107662.html

C#使用Blazor编译WebAssembly供前端调用(一),关于SkiaSharp相关问题的更多相关文章

  1. 编译可供C#调用的C/C++动态链接库dll文件

    编译可供C#调用的C/C++动态链接库dll文件,C语言控制台应用程序,探索生成dll过程 由于项目需求,需要公司另一个团队提供相关算法支持,是用C语言编译好的dll库提供给我们进行调用. 但是拿到d ...

  2. 使用wcf编写坐标字符串生成shapefile文件,在iis发布供前端调用

    项目有一需求,需要由坐标字符串(格式:x,y,点名)生成shapefile,由于在前台开发类似功能比较麻烦而且也不适用,最终决定使用WCF来实现,不借助现有GIS软件,基于GDAL实现. 实现过程如下 ...

  3. Go 程序编译成 DLL 供 C# 调用。

    Go 程序编译成 DLL 供 C# 调用. C# 结合 Golang 开发   1. 实现方式与语法形式 基本方式:将 Go 程序编译成 DLL 供 C# 调用. 1.1 Go代码 注意:代码中 ex ...

  4. 用IKVMC将jar转成dll供c#调用

    用IKVMC将jar转成dll供c#调用 ikvmc c# dll jar 用IKVMC将jar转成dll供c#调用 前言 ikvmc介绍 ikvmc下载安装 下载并解压 设置环境变量 jar-> ...

  5. 如何用VC编写供PB调用的DLL

    和编写一般的DLL方法相同,需要注意以下两点: (1)调用约定 c函数有_stdcall._cdecl._fastcall等多种调用约定,调用约定用来说明函数参数的压栈顺序和由谁(函数自身还是调用者) ...

  6. 【C++】将调用第三方库的代码封装成动态库供上层调用

    需求分析 Java应用中需要调用C++的程序,而这个C++的程序中需要引入一个第三方静态库.所以需要将该程序编译成一个动态库文件(.so)供Java调用. 步骤 使用CLion创建一个动态库的项目,会 ...

  7. Visual Studio 2010编译时总是提示"调用目标发生了异常"的解决

    现象: 无论建立的是Win32 Console的解决方案,还是MFC的解决方案,重新打开Visual Studio 2010之后,编译时总是提示“调用的目标发生了异常” 解决: 1. 关闭Visual ...

  8. 可以供MFC调用的,QT实现的DLL(使用qt-solutions的qtwinmigrate实现)

    MFC和QT的消息循环机制不同,所以,要让QT写的DLL可以供MFC调用,要做一点特殊的处理 #include <qmfcapp.h> #include <qwinwidget.h& ...

  9. 可以供MFC调用的,QT实现的DLL(qtwinmigrate实现)

    MFC和QT的消息循环机制不同,所以,要让QT写的DLL可以供MFC调用,要做一点特殊的处理 #include <qmfcapp.h> #include <qwinwidget.h& ...

  10. 基于HTTP可供浏览器调用的本地打印程序

    之前给公司做打印都是用ActiveX控件,只支持IE浏览器,最近需要支持谷歌,又不想去学谷歌插件编写,于是就用本地启动一个http服务器来供浏览器调用(写成windows服务更好),同事用了都说好(笑 ...

随机推荐

  1. Kotlin:【List集合】安全索引取值函数、可变列表、mutator函数、removeIf函数、list集合遍历、解构(过滤不需要的元素赋值)

  2. ORM(Object Relational Mapping:对象关系映射)

    了解orm,先了解以下概念: 什么是"持久化" 持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘).持久化的主要应用是将内存中的数据存 ...

  3. Billyboss pg walkthough Intermediate window

    nmap ┌──(root㉿kali)-[/home/ftpuserr/nc.exe] └─# nmap -p- -A -sS 192.168.219.61 Starting Nmap 7.94SVN ...

  4. 简单聊一下*SWITCH*交换机的作用

    交换机 交换机工作在数据链路层的物理设备或者说是接入层的物理设备,转发数据帧. 随着企业网络的发展,越来越多的用户需要接入到网络,交换机提供的大量的接入端口能够很好地满足这种需求.同时,交换机也彻底解 ...

  5. 冠军!天翼云在国际AI顶会大模型挑战赛中拔得头筹!

    6月7日,国际人工智能顶会CVPR 2023举办的第一届大模型挑战赛(CVPR 2023 Workshop on Foundation Model:1st foundation model chall ...

  6. Git操作的基本命令

    git命令常用步骤 初始化,把当前文件夹作为git本地仓库 git init 把本地仓库与选程仓库关联 git remote add origin http://gitee.com/ 把项目区中做了修 ...

  7. 同步工具-SeaTunnel使用

    一.介绍 SeaTunnel 是一个非常好用.超高性能的分布式数据集成平台,架构于 Apache Spark 和 Apache Flink 之上,实现了海量数据的实时同步与转换.每天可以稳定高效地同步 ...

  8. C盘扩展卷碰到的那些事-->不是同一块物理磁盘操作扩展卷是有坑的

    自己电脑上面用过win10系统资源管理器扩展卷的功能,用过几次都成功扩容了磁盘空间,简单说一下原理: 就是将剩余未分配的磁盘空间划给要扩展的磁盘. 这天公司的电脑C盘老是红色提示空间不足,那就扩充容量 ...

  9. Luogu P3177 树上染色 [ 蓝 ] [ 树形 dp ] [ 贡献思维 ]

    一道很好的树形 dp !!!!! 树上染色. 错误思路 定义 \(dp[u][i]\) 表示以 \(u\) 为根的子树中,把 \(i\) 个点染成黑色的最大收益. 但这样写,就在转移的时候必须枚举每一 ...

  10. Zoom视频会议软件使用指南

    引言 在远程工作和在线教育日益普及的今天,Zoom视频会议软件已成为全球数百万用户沟通协作的首选工具.以其稳定的连接.清晰的音视频质量和便捷的操作界面,Zoom极大地促进了跨地域的实时交流.本文将为您 ...