# webcs **Repository Path**: lightsever/webcs ## Basic Information - **Project Name**: webcs - **Description**: 探索性项目,用于把c#代码编译为 ts 和 wasm,用于web和小游戏等开发环境。 以ts为主,方便调试。 wasm为辅,对数据密集型业务,提高操作性能。 你可以理解为像burst 一样,只把性能关键的代码编译为wasm - **Primary Language**: C# - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-27 - **Last Updated**: 2026-05-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebCS 将 C# 直接编译为 JavaScript 的项目。 ## 为什么 JS 的跨平台能力很强,插一个浏览器就可以跑在任何平台 + 微信小游戏。 Unity 也有 C# 开发 WebGL 的能力,但通过 wasm 执行,调试困难。本案通过 JS 为主执行,无需另外的 GC 系统,也很容易调试。高性能代码通过无 GC 的特殊 C# 约定,也可以编译为 wasm。 ## 里程碑     已经将c#的主要语法梳理了一遍,尽量进行了转译。常规逻辑开发肯定够用了。     针对struct 做了特别的转译,js没有值类型,所以我们生成了clone函数,自动执行。     针对struct 也做了读写的扩展,这在webgl编程中很常用,比如填充顶点。 ## 文档 - [语法支持说明](docs/syntax-support.md) — C# 特性支持/不支持分类列表 - [JS 导出方法文档](docs/js-export.md) — Attribute 用法、JS 对象映射、DOM/WebGL 接口列表 - [struct 转译说明](docs/struct.md) — struct 值语义模拟、clone、JSMemoryFlat 二进制序列化 - [开发历史](history.md) — 按时间倒序的开发记录 ## 构建 ```bash dotnet build ``` ## CLI 运行 ```bash dotnet run --project src/webcs.builder -- [--name ] ``` ## 架构 转译管线:`C# 源码 → Roslyn AST (CSharpCompilation) → SyntaxTranslator 遍历 → JavaScript 文本` 核心项目 `src/webcs.builder/`: - **Analysis/** — `SourceAnalyzer`(Roslyn 解析)、`SyntaxTranslator`(核心转译器)、`TypeHelper`(共享工具) - **Generation/** — `TypeScriptEmitter`(编排器)、`ModuleEmitter`(库模块)、`SourceMapWriter`(Source Map v3)、`HtmlWriter`(index.html) 技术栈:.NET 10.0、`Microsoft.CodeAnalysis.CSharp` 4.*