You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用Blazor Web组件从JavaScript调用C# WebAssembly的最小配置

C#类库编译为WASM供JS调用的最小配置方案

不需要引入完整Blazor框架,直接使用.NET官方提供的WASM运行时和JS互操作能力即可,最小配置步骤如下:

环境准备

  • 安装.NET 7 或更高版本SDK
  • 安装WASM编译依赖工作负载,执行命令:
    dotnet workload install wasm-tools

项目配置

新建C#类库项目,修改.csproj文件为以下最小配置:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <!-- 指定运行时为浏览器WASM -->
    <RuntimeIdentifier>browser-wasm</RuntimeIdentifier>
    <!-- 绑定JS入口文件 -->
    <WasmMainJSPath>main.js</WasmMainJSPath>
    <OutputType>Exe</OutputType>
    <!-- 以下配置用于裁剪冗余体积 -->
    <InvariantGlobalization>true</InvariantGlobalization>
  </PropertyGroup>
</Project>

C#侧导出方法

需要暴露给JS调用的静态方法添加[JSExport]特性即可:

using System.Runtime.InteropServices.JavaScript;

public partial class Calculator
{
    [JSExport]
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

JS侧调用逻辑

在项目根目录新建main.js文件,初始化WASM运行时后即可调用导出的C#方法:

import { dotnet } from './dotnet.js'

// 初始化.NET运行时
const runtime = await dotnet.create();
// 获取当前程序集的导出方法
const exports = await runtime.getAssemblyExports(runtime.getConfig().mainAssemblyName);

// 直接调用C#导出的Add方法
const result = exports.Calculator.Add(2, 3);
console.log(result); // 输出5

编译与使用

执行发布命令编译产物:
dotnet publish -c Release
编译完成后所有可用的运行时产物都在bin/Release/net7.0/browser-wasm/publish/wwwroot目录下,直接部署该目录的文件即可使用,最小产物体积可控制在1MB以内。

可选优化

如果需要进一步压缩体积,可在.csproj中添加以下配置开启Native AOT编译,最终体积可降至数百KB:

<PropertyGroup>
  <WasmBuildNative>true</WasmBuildNative>
  <TrimMode>full</TrimMode>
</PropertyGroup>

内容的提问来源于stack exchange,提问作者Elringus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:27:00