C# 开发环境搭建(Avalonia UI、Blazor Web UI、Web API 应用示例)

news2024/9/23 3:30:30

文章目录

  • C# 文档
  • .NET SDK 下载
  • 安装 .NET SDK
  • 安装完验证
  • VS Code 配置
    • C# 开发插件
    • settings.json
  • WPF UI 框架
  • Avalonia UI 框架
    • 创建 Avalonia 项目
    • Avalonia 官方示例
    • Avalonia 桌面 UI 库
  • Blazor Web UI 框架
    • 创建应用
    • 项目结构
  • ASP.NET Core 控制器创建 Web API
  • dotnet 命令
    • dotnet new
    • dotnet build
    • dotnet run
    • dotnet tool

C# 文档

  • https://learn.microsoft.com/zh-cn/dotnet/csharp/tour-of-csharp/

.NET SDK 下载

  • https://dotnet.microsoft.com/zh-cn/download

安装 .NET SDK

在这里插入图片描述

安装完验证

dotnet -h
# .NET SDK 版本
dotnet --version
# .NET SDK 的列表
dotnet --list-sdks
# .NET 运行时的列表
dotnet --list-runtimes
# .NET 安装和计算机环境详细信息
dotnet --info

在这里插入图片描述

  • 安装时正常会自动添加 PATH
# /usr/local/share/dotnet:~/.dotnet/tools
echo $PATH

在这里插入图片描述

VS Code 配置

C# 开发插件

C#
C# Dev Kit
Avalonia for VSCode

settings.json

  • 配置 Code Runner
{
	"code-runner.executorMap": {
		"csharp": "cd $dir && dotnet run $fileName"
	}
}
  • 创建一个 控制台应用
# 安装模板包
dotnet new install Microsoft.NET.Runtime.WebAssembly.Templates
# 根据 console 模板创建项目
dotnet new console -o ./demo -n demo
# 根据 console 模板创建项目,未指定名称则使用输出目录的名
dotnet new console -o ./demo
  • 运行 demo 项目

在这里插入图片描述

  • 或者终端执行命令
dotnet run

WPF UI 框架

WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架。

  • 文档: https://learn.microsoft.com/zh-cn/previous-versions/dotnet/netframework-4.0/ms742119(v=vs.100)

注: 本人是 Mac 电脑无法演示。

Avalonia UI 框架

Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这意味着开发人员可以共享他们的UI代码,并在不同的目标平台上保持统一的外观和感觉。

  • Github: https://github.com/AvaloniaUI/Avalonia

  • 官网: https://avaloniaui.net/

  • 文档: https://docs.avaloniaui.net/zh-Hans/docs/welcome

创建 Avalonia 项目

# 安装 Avalonia 模板
dotnet new install Avalonia.Templates
# 列出已安装的模板
dotnet new list

在这里插入图片描述

# 创建 Avalonia 项目
dotnet new avalonia.app -o demo
cd demo
# 运行项目
dotnet run

在这里插入图片描述

Avalonia 官方示例

  • https://github.com/AvaloniaUI/Avalonia.Samples
git clone https://github.com/AvaloniaUI/Avalonia.Samples.git
cd Avalonia.Samples
cd ./src/Avalonia.Samples/CompleteApps/SimpleToDoList
  • SimpleToDoList.csproj 修改为当前环境 .NET SDK 版本
<TargetFramework>net8.0</TargetFramework>
  • 运行项目
dotnet run

在这里插入图片描述

Avalonia 桌面 UI 库

  • Github: https://github.com/kikipoulet/SukiUI

在这里插入图片描述

git clone https://github.com/kikipoulet/SukiUI.git
cd SukiUI/SukiUI.Demo
dotnet run

在这里插入图片描述

Blazor Web UI 框架

注: Blazor允许Web开发人员使用C#代替JavaScript创建Web应用程序。他们还可以重用.NET Silverlight代码。另外,Blazor应用程序由使用C#,HTML和CSS实现的可重复使用的Web UI组件组成。由于客户端和服务器代码都是用C#编写的,因此开发人员可以共享代码和库。

  • ASP.Net Core 文档: https://dotnet.microsoft.com/zh-cn/learn/aspnet/blazor-tutorial/intro

  • Blazor 文档: https://learn.microsoft.com/zh-cn/aspnet/core/blazor/?view=aspnetcore-8.0&WT.mc_id=dotnet-35129-website

创建应用

dotnet new blazor -o BlazorApp

在这里插入图片描述

项目结构

  • Program.cs 是启动服务器以及在其中配置应用服务和中间件的应用的入口点。
  • 在 Components 目录中:
    • App.razor 为应用的根组件。
    • Routes.razor 配置 Blazor 路由器。
    • Pages 目录包含应用的一些示例网页。
  • BlazorApp.csproj 定义应用项目及其依赖项。
  • Properties 目录中的 launchSettings.json 文件为本地开发环境定义不同的配置文件设置。创建项目时会自动分配端口号并将其保存在此文件上。

在这里插入图片描述

  • 运行应用
dotnet run
  • http://localhost:5291/

在这里插入图片描述

ASP.NET Core 控制器创建 Web API

  • 创建 Web API 文档: https://learn.microsoft.com/zh-cn/training/modules/build-web-api-aspnet-core/?WT.mc_id=dotnet-35129-website
dotnet --list-sdks
dotnet new webapi -controllers -f net8.0 -o demo

在这里插入图片描述

  • 项目结构
名称描述
Controllers/包含公共方法公开为 HTTP 终结点的类。
Program.cs配置服务和应用的 HTTP 请求管道,包含应用的托管入口点。
ContosoPizza.csproj包含项目的配置元数据。
ContosoPizza.http包含直接从 Visual Studio Code 测试 REST API 的配置。

在这里插入图片描述

  • 运行应用
dotnet run
  • http://localhost:5223/weatherforecast

在这里插入图片描述

dotnet 命令

  • https://learn.microsoft.com/zh-cn/dotnet/core/tools/dotnet

dotnet new

dotnet new -h
  • 列出要使用 dotnet new 运行的可用模板
dotnet new list

在这里插入图片描述

  • 在 NuGet.org 上搜索 dotnet new 支持的模板
dotnet new search console

在这里插入图片描述

  • 安装模板包
dotnet new install Microsoft.NET.Runtime.WebAssembly.Templates

在这里插入图片描述

  • 卸载模板包
# 列出已安装的模板及其详细信息
dotnet new --uninstall
# 卸载 WebAssembly 模板包
dotnet new uninstall Microsoft.NET.Runtime.WebAssembly.Templates

在这里插入图片描述

  • 更新已安装的模板包
dotnet new update -h
# 检查已安装模板包更新
dotnet new update --check-only
# 更新已安装模板包
dotnet new update

dotnet build

  • 生成项目及其所有依赖项
dotnet build -h

dotnet run

  • 无需任何显式编译或启动命令即可运行源代码
dotnet run -h
dotnet run --no-build

dotnet tool

dotnet tool -h
# 列出全局或本地安装的工具
dotnet tool list

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2090782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索Unity与C#的无限潜能:从新手到高手的编程之旅

在数字创意与技术创新交织的今天&#xff0c;Unity游戏引擎凭借其强大的跨平台能力和灵活的编程接口&#xff0c;成为了无数开发者心中的首选。而C#&#xff0c;作为Unity的官方脚本语言&#xff0c;更是以其面向对象的特性和丰富的库支持&#xff0c;为游戏开发注入了无限可能…

克隆技术在代码溯源和复用及变更分析中的应用

摘要&#xff1a; 克隆技术已在软件代码溯源分析领域得到广泛应用&#xff0c;而轩宇软件成分分析系统基于溯源分析和同源分析技术&#xff0c;通过先进的特征向量提取、相似性匹配、高效检索引擎等多项技术&#xff0c;帮助企业高效识别代码来源、评估自主可控率&#xff0c;…

【数据结构】关于哈希表内部原理,你到底了解多少???(超详解)

前言&#xff1a; &#x1f31f;&#x1f31f;本期讲解关于哈希表的内部实现原理&#xff0c;希望能帮到屏幕前的你。 &#x1f308;上期博客在这里&#xff1a;http://t.csdnimg.cn/7D225 &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 目录 &a…

安嘉空间:智慧科技守护空间健康

在当今社会&#xff0c;随着人们对生活质量要求的不断提升&#xff0c;室内环境的健康与安全问题日益受到重视。安嘉空间&#xff0c;作为一家致力于人居健康空间技术研发的高科技企业&#xff0c;以其独创的技术和卓越的产品&#xff0c;为广大用户提供了一套全面的空间健康解…

进销存自动统计单据表格——未来之窗行业应用跨平台架构

一、代码 function 未来之窗_人工智能_计算单据(objbyclass,obj目标显示,obj目标值){console.log("未来之窗_人工智能_计算单据"objbyclass);var 计算结果0;$("."objbyclass).each(function(){var 输入框值 $(this).val();console.log("输入框值"…

去中心化(Decentralization)

去中心化&#xff08;Decentralization) 并不是一个新概念&#xff0c;它已在战略、管理和政府中使用了很长时间。去中心化的基本思想是将控制权和权限分配给组织的外围&#xff0c;而不是由一个中心机构完全控制组织。这种配置为组织带来了许多好处&#xff0c;例如提高了效率…

欧洲用户对中国应用程序的感知:一个复杂的挂毯

在数字时代&#xff0c;中国应用程序迅速在全球范围内占有一席之地&#xff0c;吸引了全球用户的注意力和好奇心。在欧洲&#xff0c;这些应用程序引发了人们的兴趣、阴谋和担忧&#xff0c;不同国家和人口统计数据的看法差异很大。 对中国应用程序感兴趣的主要驱动力之一是它…

git命令使用详情

目录 一. 安装教程 二. git配置 1. 查看git配置参数 2. 设置邮箱和用户名 3. SSH配置 4. 配置git远程库公钥 5. 编码设置 三. git 提交流程 1. 整体操作流程图 2. Git仓库包含5个区域 3. 下载、提交、更新命令 3.1. 下载 3.2. 提交 3.3. 更新&#xff08;两种方式…

无人机 PX4 飞控 | ROS应用层开发:基础代码框架构建

无人机 PX4 飞控 | ROS应用层开发&#xff1a;基础代码框架构建 基础代码框架构建文件建立代码基本构建测试 基础代码框架构建 本篇博客拟在构建一个 无人机 PX4 飞控 ROS应用层开发 的 基础代码框架。 其中包含了基础类文件、类头文件、main主函数文件&#xff0c;及其编译所…

数据结构-c/c++实现栈(详解,栈容量可以动态增长)

一.栈的基本介绍 栈是一种只能够在一端进行插入和删除的顺序表。如下图 空栈&#xff1a;表示不含任何元素的栈 栈顶&#xff1a;表示允许进行插入和删除元素的一端 栈底&#xff1a;表示不允许进行插入和删除元素的一端 即栈是一种后进先出的线性表数据结构 二.栈的常见操…

Redis高级---面试总结之内存过期策略及其淘汰策略

目前已更新系列&#xff1a; 当前&#xff1a;Redis高级---面试总结之内存过期策略及其淘汰策略 并发编程之----线程池ThreadPoolExecutor,Excutors的使用及其工作原理 Redis高级----主从、哨兵、分片、脑裂原理-CSDN博客 计算机网络--面试知识总结一 计算机网络-----面试知…

【深度学习】yolov8的微调

yolov8的集成度太高了&#xff0c;除了config的哪些参数以外&#xff0c;需要更精细的微调。 比如这里&#xff1a; https://github.com/ultralytics/ultralytics/blob/main/ultralytics/utils/tuner.py 应用场景&#xff0c;交通标志的向左转&#xff0c;向右转之类的&#x…

Golang | Leetcode Golang题解之第384题打乱数组

题目&#xff1a; 题解&#xff1a; type Solution struct {nums, original []int }func Constructor(nums []int) Solution {return Solution{nums, append([]int(nil), nums...)} }func (s *Solution) Reset() []int {copy(s.nums, s.original)return s.nums }func (s *Solu…

STM32G474之HAL_Delay()会导致死机的原因

使用HAL库需要HAL_Delay()函数支持&#xff0c;离开这个函数&#xff0c;和这个函数有关的函数就无法调用了。遇到这个问题&#xff0c;我们肯定会否定HAL库&#xff0c;也确实它是有点差&#xff0c;但也有好的一面。 为什么HAL库初始化了SysTick定时器&#xff0c;也使能了相…

书生大模型实战营(1)——InterStudio基础知识+Vscode SSH连接远程服务器+Linux基础指令

参加书生.浦江大模型实战训练营&#xff0c;学习大模型知识和微调技术&#xff0c;所有课程免费&#xff0c;通过闯关的形式学习&#xff0c;也比较有趣。一起来了解LLM的世界。邀请链接 产品简介 InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法…

Android Handler消息机制完全解析(二)

欢迎转载&#xff0c;转载请注明出处&#xff1a;https://blog.csdn.net/dmk877/article/details/141690289 在阅读本篇博客之前建议先阅读此篇 Android Handler消息机制完全解析(一) 在看Looper源码之前必须要理解ThreadLocal&#xff0c;ThreadLocal在Handler消息机制中起到…

信息安全--(五)物理与环境安全技术(二)机房安全分析与防护

在使用本博客提供的学习笔记及相关内容时&#xff0c;请注意以下免责声明&#xff1a;信息准确性&#xff1a;本博客的内容是基于作者的个人理解和经验&#xff0c;尽力确保信息的准确性和时效性&#xff0c;但不保证所有信息都完全正确或最新。非专业建议&#xff1a;博客中的…

FlowUs 小程序:开启高效之旅,订阅内容超精彩

一、丰富多样的订阅选择 FlowUs 小程序提供了极为丰富的订阅内容。无论你是对知识管理、项目管理感兴趣&#xff0c;还是专注于创意写作、时间规划&#xff0c;都能在这里找到适合自己的订阅选项。从专业的行业资讯到实用的技巧指南&#xff0c;从激发灵感的创意案例到深入的学…

业务解耦-Spring事件监听的三种实现方式

实现ApplicationListener 步骤如下&#xff1a; 1.写Event类&#xff0c;需要继承Spring的ApplicationEvent类 2.写监听类&#xff0c;需要实现Spring的ApplicationListener接口&#xff0c;加上Component注解 3.监听类实现onApplicationEvent方法 4.通过ApplicationContext.p…

开放大世界的全局寻路

开放大世界的寻路一直是很困扰我的一个点&#xff0c;地图大、还是动态可变的&#xff0c;所以寻路会有很多要求。就我们项目来讲&#xff0c;有这几个要求&#xff1a; 能满足极大范围的地图&#xff1b; 地图寻路数据能实时构建&#xff0c;且重建代价很小&#xff1b; 寻路的…