当前位置: 首页 > news >正文

微软Wasm学习-创建一个最简单的c#WebAssembly测试工程

要创建一个最简单的微软 WebAssembly(Wasm)测试工程,最直接的方式是使用 Blazor WebAssembly,这是微软官方推荐的 WebAssembly 开发框架。下面是创建和运行最简单 Blazor WebAssembly 项目的步骤:

相关:微软的wasm 和 rust的wasm 方案对比》》

深入:c# WebAssembly,在网页上能运行多线程,异步,锁,原子加,减等代码吗

步骤 1:安装必要工具

确保已安装.NET SDK(5.0 或更高版本),可以从微软官网下载。

步骤 2:创建项目

打开命令行工具,运行以下命令创建一个新的 Blazor WebAssembly 项目:

dotnet new blazorwasm -n WasmTestApp
cd WasmTestApp

步骤 3:项目结构说明

最简单的项目结构包含:

  • Program.cs - 应用入口点
  • App.razor - 根组件
  • Pages 文件夹 - 包含页面组件
  • wwwroot - 静态文件

步骤 4:修改为最简单的测试

我们可以修改Pages/Index.razor文件,创建一个简单的测试页面:

最简单的Blazor WebAssembly测试项目,Index.razor:

@page "/"<h1>微软Wasm测试</h1><p>这是一个最简单的Blazor WebAssembly应用</p><button @onclick="IncrementCount">点击计数</button>
<p>计数: @currentCount</p>@code {private int currentCount = 0;private void IncrementCount(){currentCount++;}
}
//Program.csusing Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using WasmTestApp;var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("#app");
builder.RootComponents.Add<HeadOutlet>("head::after");builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });await builder.Build().RunAsync();

创建时间:

步骤 5:运行项目

在命令行中执行以下命令运行项目:

dotnet run

然后打开浏览器访问 https://localhost:5001(或命令行显示的端口),你将看到一个简单的页面,包含一个按钮和计数器,点击按钮可以增加计数。

工作原理说明

  1. Blazor WebAssembly 将 C# 代码编译为 WebAssembly
  2. 应用在浏览器中运行,无需服务器端参与(除非需要 API 调用)
  3. 上面的示例展示了基本的组件结构和事件处理

这个最简单的测试项目验证了 WebAssembly 环境的正常工作,包括:

  • 页面渲染
  • C# 代码执行
  • 交互事件处理
  • 状态管理

如果需要更深入的测试,可以添加更多组件、调用 JavaScript 或访问 Web API。

http://www.dtcms.com/a/334900.html

相关文章:

  • 【项目实战】利用AI生成式编程生成控制镜头变倍,变焦,光圈的Shell脚本(一)
  • 如何在FastAPI中玩转APScheduler,实现动态定时任务的魔法?
  • Redis7学习--详解 主从复制
  • 利用cursor+MCP实现浏览器自动化释放双手
  • 自动驾驶中的传感器技术24.1——Camera(16)
  • 企业级Java项目金融应用领域——银行系统(补充)
  • python线程学习
  • 一文了解金融合规
  • 什么是模型预测控制?
  • 算法训练营day52 图论③ 101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿
  • PTPX分析中,如何处理fsdb文件过大的问题?
  • 【C#补全计划】Lambda表达式
  • ESP32-S3_ES8311音频输出使用
  • java内存模型:
  • Ubuntu 25.04更新了哪些内容揭秘
  • PHP反序列化的CTF题目环境和做题复现第1集
  • lesson40:PyMySQL完全指南:从基础到高级的Python MySQL交互
  • 【大语言模型 00】导读
  • 【Docker】Ubuntu上安装Docker(网络版)
  • 双指针和codetop复习
  • Hexo 双分支部署指南:从原理到 Netlify 实战
  • 【遥感图像技术系列】遥感图像风格迁移的研究进展一览
  • SymPy 矩阵到 NumPy 数组的全面转换指南
  • Redis 04 Reactor
  • eChart饼环pie中间显示总数_2个以上0值不挤掉
  • 【集合框架List进阶】
  • 【UHD】vivado 2021.1 编译
  • 选择式与生成式超启发算法总结
  • 模型训练监控:TensorBoard与Weights Biases (WB) 使用详解
  • CVE-2024-28752漏洞复现