将现有 C# 代码编译为 WebAssembly

Posted

技术标签:

【中文标题】将现有 C# 代码编译为 WebAssembly【英文标题】:Compiling existing C# code to WebAssembly 【发布时间】:2021-01-26 12:31:30 【问题描述】:

是否可以将现有的 C# 代码编译为 WebAssembly (.wasm),从而无需或几乎无需更改代码? 我必须使用 Blazor 还是其他可能性?

【问题讨论】:

目前 (.NET 5.0),Blazor 不会将您的代码编译为 WebAssembly。相反,它使用已编译为 WebAssembly 的 .NET 运行时来解释代码的 IL。 非常感谢,我可以使用现有的 C# 代码了吗? 【参考方案1】:

是否可以将现有的 C# 代码编译为 WebAssembly (.wasm)

不,还没有编译器。但是

所以不需要或几乎不需要更改代码?

这很简单,您只需将 .net DLL(包)添加到您的项目中即可。 只要确保代码在浏览器中有意义,即没有线程,除了 HttpClient 等没有 I/O。

我必须使用 Blazor 还是其他可能性?

目前只有 Blazor。

【讨论】:

嗯,有微软的 NativeAOT(以前是 CoreRT)github.com/dotnet/runtimelab/blob/feature/NativeAOT-LLVM/docs/…。它不是官方支持的分支,社区在 Microsoft 的帮助下为其做出贡献。它会将一些 c# 代码编译为 Wasm(使用 emscripten 和 LLVM 编译器)。您可以查看 HelloWasm.cs 测试桶以了解应该如何工作:github.com/dotnet/runtimelab/blob/feature/NativeAOT-LLVM/src/… @SWaye 您的答案比投票答案更接近 :) 谢谢!

以上是关于将现有 C# 代码编译为 WebAssembly的主要内容,如果未能解决你的问题,请参考以下文章

如何将 .NET EXE 反编译为可读的 C# 源代码?

将 C# .net 4 代码编译为 .net 3.5?

是否有编译为机器代码的 C C++ C# 编译器 [关闭]

将 protobuf-net RuntimeTypeModel 编译为 C#,而不是 DLL

是否可以将 C# 项目编译为单文件 UMD JavaScript 库?

C# 编译为 32/64 位,或任何 cpu? [复制]