是否可以将C#项目编译为单文件UMD JavaScript库?
解答:在无特定环境依赖的JS场景调用C#类库的方案
完全可以实现,不需要依赖Blazor框架,也不需要DOM或其他特定环境API,基于独立的.NET WebAssembly运行时即可实现:
- 首先创建普通.NET类库项目编写需要暴露的C#逻辑,用
[JSExport]属性标记需要对外暴露的方法,全程不需要引入任何Blazor相关依赖包 - 发布时指定WASM编译目标,配置关闭Blazor专属绑定、DOM依赖等选项,执行
dotnet publish命令生成独立运行时产物 - 输出产物包含
dotnet.js入口文件和对应WASM二进制,在任意支持WebAssembly标准的JS环境引入该入口,完成运行时初始化后即可直接调用预先封装的C#方法
该模式完全脱离Blazor的SPA、浏览器DOM绑定逻辑,只要JS环境支持WebAssembly标准即可运行,可适配Node.js、Electron内嵌JS、嵌入式JS引擎等各类场景。
如果需要进一步缩减运行时体积、提升启动速度,也可以使用.NET Native AOT能力将C#代码直接编译为WASM文件,仅导出需要调用的接口,产物无额外依赖,适配性更强。
内容的提问来源于stack exchange,提问作者Elringus
相关产品推荐
相关产品推荐

