将现有的 C# 代码编译为 WebAssembly

Jan*_*ine 9 c# webassembly blazor blazor-webassembly

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

jjx*_*tra 9

.NET 8 进一步改进了这一点。

使用 .NET 7。现在甚至在 Blazor 生态系统之外也正式添加了对将 C# 编译为 wasm 的支持。

https://devblogs.microsoft.com/dotnet/use-net-7-from-any-javascript-app-in-net-7/

完整的 .NET 7 发行说明: https: //devblogs.microsoft.com/dotnet/announcing-dotnet-7/

根据这里的第一条评论,虽然边缘仍然有些粗糙,但应该会针对 .NET 8 进行重大修改和重构。


Hen*_*man 5

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

不,没有编译器(还)。但

以便无需或几乎无需更改代码?

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

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

目前只有 Blazor。

  • 好吧,有微软的 NativeAOT(以前是 CoreRT)https://github.com/dotnet/runtimelab/blob/feature/NativeAOT-LLVM/docs/workflow/building/coreclr/nativeaot.md 。它不是官方支持的分支,社区在 Microsoft 的帮助下为其做出贡献。它将一些 C# 代码编译为 Wasm(使用 emscripten 和 LLVM 编译器)。您可以查看 HelloWasm.cs 测试存储桶以了解应该起作用的内容:https://github.com/dotnet/runtimelab/blob/feature/NativeAOT-LLVM/src/tests/nativeaot/SmokeTests/HelloWasm/HelloWasm 。CS (3认同)