Repolode
zion-sati

zion-sati/NetWasm

将 C# 与 .NET CIL 直接编译为小体积独立 WASI Wasm 组件的编译器、运行时与 SDK。

Star
233
Fork
7
未关闭 Issue
6
最近提交
1小时前

这是什么?

NetWasm 将 C# 和 .NET CIL 直接编译为 WebAssembly,使用自有的编译器、CoreLib、运行时和 SDK,不携带桌面 CLR、Mono 或应用程序 DLL。编译器只处理可达代码并仅链接所需的运行时支持,输出为可由 Wasmtime 等 Wasm 宿主运行的独立 WASI Preview 2 组件,构建过程沿用常规的 dotnet CLI。

该项目面向希望获得小体积、可沙箱化 C# 程序的开发者,例如用于无服务器函数或浏览器模块。它提供三种垃圾回收策略(默认 Compact、NetWasmGC 和 Bump),可将 C# 导出发布为带类型的 JavaScript 模块并在 Web Worker 中运行,还能根据 WIT 生成 C# 绑定。支持范围限定在 .NET 的一个子集内:运行时反射、dynamic、运行时程序集加载和托管线程不在其支持范围内,项目目前仍处于 1.0 之前阶段。

核心功能

  • 01将 C# 和 .NET CIL 直接编译为独立的 WASI Preview 2 组件。
  • 02只链接可达代码和所需运行时支持,以保持二进制体积小。
  • 03提供 Compact、NetWasmGC 和 Bump 三种垃圾回收策略。
  • 04可将 C# 导出发布为带类型的 JavaScript 模块,并支持在 Web Worker 中使用。
  • 05可根据 WIT 生成 C# 绑定,并支持静态 .a 原生互操作。
  • 06通过标准 dotnet CLI 完成构建与测试。

适用场景

  • 将小型 C# 函数部署到 WebAssembly 宿主或无服务器运行时。
  • 以带类型的 JavaScript 模块形式,在浏览器页面或 Web Worker 中运行 C# 逻辑。
  • 开发同时面向 NetWasm 和桌面 .NET 的可移植 C# 库。
  • 评估将 C# 作为比 Blazor WebAssembly 更紧凑的 Wasm 方案。

快速上手

  1. 1

    安装 .NET SDK 10.0.303 或更新版本

  2. 2

    安装 NetWasm 项目模板

    dotnet new install NetWasm.Templates
  3. 3

    创建新的 NetWasm 应用并运行

    dotnet new netwasm-app -n HelloNetWasm
  4. 4

    将应用发布为独立的 WASI 组件

    dotnet publish -c Release -o publish/local

使用前须知

  • NetWasm 尚未发布 1.0 版本,次要版本之间源代码、包和 ABI 契约可能发生变化。
  • 不支持运行时反射、dynamic、运行时加载程序集和托管线程。
  • 通用的文件、目录、套接字和子进程 API 尚未实现。
  • 发布的组件需要 Wasmtime 等 WebAssembly 宿主才能运行。

标签

常见问题

NetWasm 是什么?
将 C# 与 .NET CIL 直接编译为小体积独立 WASI Wasm 组件的编译器、运行时与 SDK。 NetWasm 将 C# 和 .NET CIL 直接编译为 WebAssembly,使用自有的编译器、CoreLib、运行时和 SDK,不携带桌面 CLR、Mono 或应用程序 DLL。编译器只处理可达代码并仅链接所需的运行时支持,输出为可由 Wasmtime 等 Wasm 宿主运行的独立 WASI Preview 2 组件,构建过程沿用常规的 dotnet CLI。
NetWasm 可以免费使用吗?用的什么许可证?
NetWasm 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
NetWasm 还在维护吗?
活跃维护中。NetWasm 最近一次提交是在 2026年10月22日。
NetWasm 适合用来做什么?
将小型 C# 函数部署到 WebAssembly 宿主或无服务器运行时。 以带类型的 JavaScript 模块形式,在浏览器页面或 Web Worker 中运行 C# 逻辑。 开发同时面向 NetWasm 和桌面 .NET 的可移植 C# 库。 评估将 C# 作为比 Blazor WebAssembly 更紧凑的 Wasm 方案。
NetWasm 怎么安装和运行?
安装 .NET SDK 10.0.303 或更新版本 安装 NetWasm 项目模板: dotnet new install NetWasm.Templates 创建新的 NetWasm 应用并运行: dotnet new netwasm-app -n HelloNetWasm 将应用发布为独立的 WASI 组件: dotnet publish -c Release -o publish/local
在哪里获取 NetWasm?
源代码和安装说明在 GitHub 上:https://github.com/zion-sati/NetWasm

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目