没有 Blazor 的 C# WASM

问题描述 投票:0回答:5

我希望能够从 JavaScript 调用 C# 代码。 mono 项目曾经有一个 WASM SDK,您可以从他们的旧 Jenkins 服务器下载它,但不再公开。现有文档倾向于指向这些构建。 Azure Devops 版本不包含此 SDK。我在他们的 Github 帐户上看到的一些消息表明他们现在专注于 WASM 的 .NET 6。我不想使用 Blazor 组件。 .NET 6 中有没有办法在没有 Blazor UI 的情况下构建最小大小的 WASM 二进制文件?

c# .net .net-core webassembly
5个回答
16
投票

是的,这绝对有可能。 Blazor 并没有垄断 C#/WASM,而且目前还不清楚它最终是否会成为最佳的长期选择(很多证据表明它不是)。

我建议从 Uno WASM Bootstrap 开始。 https://github.com/unoplatform/Uno.Wasm.Bootstrap

2022-06-30 编辑 - 更多证据表明 Blazor 并不是城里唯一的游戏,甚至也不是这里创新的前沿: https://visualstudiomagazine.com/articles/2022/06/29/uno-platform-4-4.aspx


7
投票

dotnet 7 似乎改进了 WASM 支持。更多信息请参见 https://devblogs.microsoft.com/dotnet/dotnet-7-wasm/


5
投票

NativeAOT-LLVM,一个未经 Microsoft 官方支持的实验性 C# 编译器,(https://github.com/dotnet/runtimelab/tree/feature/NativeAOT-LLVM) 也可以将 C# 编译为 Wasm,无需任何 UI 框架要求。 在 Compiling C# project to WebAssembly

有一个关于库的类似问题

5
投票

Mono WASM SDK 在 dotnet/runtime 存储库中继续。基于旧的 Packager.exe 的工具已演变为基于 MSBuild/csproj 的解决方案:

https://github.com/dotnet/runtime/tree/main/src/mono/wasm

样品: https://github.com/dotnet/runtime/tree/main/src/mono/sample/wasm

当我尝试在自定义项目(不在示例中)中使用代码时,关键问题是我们需要引用私有程序集

System.Private.Runtime.InteropServices.JavaScript.dll
,它包含在Microsoft.NETCore.App.Runtime.browser-wasm中。代码与旧的 mono wasm sdk 中的
WebAssembly.Bindings.dll
几乎相同。

这是我创建的 WebGL 页面的屏幕截图,基于 dotnet/runtime/mono/wasm: enter image description here

顺便说一句,有一种观点认为通过从 C# 调用 JavaScript 函数来实现 WebGL 的性能很差:https://marcoscobena.com/?i=wave-engine-web-performance


© www.soinside.com 2019 - 2024. All rights reserved.