GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

软件研发 --- hello world 项目 之 桌面之王 C#

C# Hello World 程序安装编译运行完整指南

本指南将从零开始,详细说明如何安装.NET开发环境、编译和运行C# Hello World程序的全过程。

1. C#语言简介

C#(读作"C Sharp")是微软开发的面向对象编程语言,具有以下特点:

  • 面向对象:完全的面向对象编程语言
  • 类型安全:强类型系统,编译时类型检查
  • 内存管理:自动垃圾回收,无需手动管理内存
  • 跨平台:.NET Core/.NET 5+支持Windows、macOS、Linux
  • 丰富的库:庞大的.NET生态系统和NuGet包管理
  • 现代语法:持续更新的语言特性

2. 安装.NET开发环境

2.1 选择.NET版本

微软提供了多个.NET版本:

  • .NET Framework:仅Windows,传统版本
  • .NET Core:跨平台,已停止更新
  • .NET 5/6/7/8+:统一的跨平台版本(推荐)

推荐安装最新的.NET 8 LTS版本

2.2 下载.NET SDK

  1. 访问.NET官网:https://dotnet.microsoft.com/download
  2. 选择".NET SDK"(不是Runtime)
  3. 选择适合您操作系统的版本:
    • Windows: .exe 安装程序
    • macOS: .pkg 安装程序
    • Linux: 包管理器或 .tar.gz 文件

2.3 安装.NET SDK

Windows系统:

  1. 双击下载的.exe文件
  2. 按照安装向导进行安装
  3. 安装程序会自动配置环境变量

macOS系统:

  1. 双击下载的.pkg文件
  2. 按照安装向导进行安装
  3. 或者使用Homebrew:
    # 使用Homebrew安装.NET
    brew install --cask dotnet
    

Linux系统:

Ubuntu/Debian:

# 添加Microsoft包源
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

# 安装.NET SDK
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0

CentOS/RHEL/Fedora:

# 添加Microsoft包源
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

# 安装.NET SDK
sudo yum install dotnet-sdk-8.0  # CentOS/RHEL
sudo dnf install dotnet-sdk-8.0  # Fedora

2.4 验证安装

打开命令行工具,输入以下命令验证安装:

# 检查.NET版本
dotnet --version

# 查看已安装的SDK
dotnet --list-sdks

# 查看已安装的运行时
dotnet --list-runtimes

# 查看.NET信息
dotnet --info

如果显示版本信息,说明安装成功。

3. C#项目结构和类型

3.1 项目类型

  • 控制台应用程序:命令行程序
  • 类库:可重用的代码库
  • Web应用程序:ASP.NET Core Web应用
  • 桌面应用程序:WPF、WinForms、MAUI
  • 移动应用程序:Xamarin、.NET MAUI

3.2 项目文件结构

MyProject/
├── MyProject.csproj    # 项目文件
├── Program.cs          # 主程序文件
├── bin/               # 编译输出目录
├── obj/               # 临时文件目录
└── Properties/        # 项目属性

4. 创建和运行C#程序

4.1 方法一:使用.NET CLI(推荐)

创建新项目:

# 创建控制台应用程序
dotnet new console -n HelloWorld

# 进入项目目录
cd HelloWorld

# 查看生成的文件
dir  # Windows
ls   # macOS/Linux

替换Program.cs内容:
将生成的Program.cs文件内容替换为我们创建的Hello World代码。

运行程序:

# 直接运行(推荐用于开发)
dotnet run

# 编译并运行
dotnet build
dotnet run

4.2 方法二:手动创建项目

创建项目目录:

mkdir HelloWorld
cd HelloWorld

创建项目文件 (HelloWorld.csproj):

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>

创建Program.cs文件:
使用我们之前创建的C#代码。

// 使用System命名空间,包含Console类
using System;

// 定义命名空间,用于组织代码
namespace HelloWorld
{
    // 定义Program类,C#程序的入口类
    class Program
    {
        // Main方法是C#程序的入口点
        // static: 静态方法,可以直接通过类名调用
        // void: 不返回任何值
        // string[] args: 命令行参数数组
        static void Main(string[] args)
        {
            // 使用Console.WriteLine()方法输出文本到控制台
            // Console是System命名空间中的类,用于控制台输入输出
            Console.WriteLine("Hello World!");
            
            // 输出中文信息,展示C#对Unicode的支持
            Console.WriteLine("欢迎来到C#编程世界!");
            
            // 可选:等待用户按键,防止控制台窗口立即关闭
            // Console.ReadKey();
        }
    }
}

 

运行程序:

dotnet run

4.3 方法三:编译成可执行文件

# 编译项目
dotnet build

# 发布为自包含应用程序
dotnet publish -c Release -r win-x64 --self-contained

# 运行编译后的程序
.\bin\Release\net8.0\win-x64\publish\HelloWorld.exe  # Windows
./bin/Release/net8.0/linux-x64/publish/HelloWorld   # Linux
./bin/Release/net8.0/osx-x64/publish/HelloWorld     # macOS

4.4 预期输出

程序运行后,您应该看到以下输出:

Hello World!
欢迎来到C#编程世界!

5. .NET CLI命令详解

5.1 项目管理命令

# 创建新项目
dotnet new console -n MyApp        # 控制台应用
dotnet new classlib -n MyLibrary   # 类库
dotnet new web -n MyWebApp         # Web应用
dotnet new mvc -n MyMvcApp         # MVC应用

# 添加项目引用
dotnet add reference ../MyLibrary/MyLibrary.csproj

# 添加NuGet包
dotnet add package Newtonsoft.Json

# 移除NuGet包
dotnet remove package Newtonsoft.Json

5.2 构建和运行命令

# 恢复依赖
dotnet restore

# 编译项目
dotnet build
dotnet build -c Release  # 发布版本

# 运行项目
dotnet run
dotnet run --project MyApp

# 测试项目
dotnet test

# 发布项目
dotnet publish
dotnet publish -c Release -o ./publish

5.3 解决方案管理

# 创建解决方案
dotnet new sln -n MySolution

# 添加项目到解决方案
dotnet sln add MyApp/MyApp.csproj
dotnet sln add MyLibrary/MyLibrary.csproj

# 列出解决方案中的项目
dotnet sln list

# 移除项目
dotnet sln remove MyApp/MyApp.csproj

6. C#程序结构详解

6.1 命名空间

// 传统方式
namespace HelloWorld
{
    class Program
    {
        // 类内容
    }
}

// C# 10+ 文件范围命名空间
namespace HelloWorld;

class Program
{
    // 类内容
}

6.2 使用语句

// 传统using语句
using System;
using System.Collections.Generic;
using System.Linq;

// C# 10+ 全局using(在项目文件中或GlobalUsings.cs中)
global using System;
global using System.Collections.Generic;

6.3 Main方法的不同形式

// 传统Main方法
static void Main(string[] args)
{
    Console.WriteLine("Hello World!");
}

// 异步Main方法
static async Task Main(string[] args)
{
    await SomeAsyncMethod();
}

// 返回int的Main方法
static int Main(string[] args)
{
    Console.WriteLine("Hello World!");
    return 0; // 返回退出代码
}

// C# 9+ 顶级程序(无需Main方法)
Console.WriteLine("Hello World!");

7. 开发工具推荐

7.1 IDE和编辑器

Visual Studio(Windows/macOS):

  • 功能最全面的C# IDE
  • 强大的调试和分析工具
  • 内置设计器和项目模板
  • 免费的Community版本

Visual Studio Code(跨平台):

  • 轻量级编辑器
  • 需要安装C#扩展
  • 适合轻量级开发

JetBrains Rider(跨平台):

  • 功能强大的跨平台IDE
  • 优秀的代码分析和重构工具
  • 付费软件

7.2 Visual Studio安装

  1. 访问:https://visualstudio.microsoft.com/
  2. 下载Visual Studio Community(免费)
  3. 安装时选择".NET桌面开发"工作负载
  4. 可选择其他工作负载(Web开发、移动开发等)

7.3 Visual Studio Code配置

# 安装C#扩展
code --install-extension ms-dotnettools.csharp

# 安装其他有用的扩展
code --install-extension ms-dotnettools.vscode-dotnet-runtime
code --install-extension formulahendry.dotnet-test-explorer

8. 常见问题及解决方案

8.1 "dotnet不是内部或外部命令"

原因: .NET SDK未正确安装或环境变量未配置

解决方案:

  1. 重新安装.NET SDK
  2. 检查环境变量PATH中是否包含.NET安装路径
  3. 重启命令行工具或重启计算机
  4. 使用完整路径运行:C:\Program Files\dotnet\dotnet.exe --version

8.2 "找不到项目文件"

原因: 当前目录没有.csproj文件

解决方案:

# 确保在正确的项目目录中
ls *.csproj  # 检查是否有项目文件

# 或者指定项目文件
dotnet run --project path/to/project.csproj

8.3 编译错误

常见错误:

  • 语法错误:检查分号、大括号匹配
  • 命名空间错误:检查using语句
  • 类型错误:检查变量类型声明

解决方案:

# 查看详细错误信息
dotnet build --verbosity detailed

# 清理项目
dotnet clean
dotnet build

8.4 NuGet包问题

# 清理NuGet缓存
dotnet nuget locals all --clear

# 恢复包
dotnet restore

# 更新包
dotnet add package PackageName --version 1.2.3

8.5 运行时错误

"应用程序无法启动":

# 检查目标框架
dotnet --list-runtimes

# 安装缺失的运行时
# 从 https://dotnet.microsoft.com/download/dotnet 下载

9. 项目配置详解

9.1 项目文件 (.csproj) 详解

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <!-- 输出类型:Exe(可执行文件), Library(类库) -->
    <OutputType>Exe</OutputType>
    
    <!-- 目标框架 -->
    <TargetFramework>net8.0</TargetFramework>
    
    <!-- 启用隐式using -->
    <ImplicitUsings>enable</ImplicitUsings>
    
    <!-- 启用可空引用类型 -->
    <Nullable>enable</Nullable>
    
    <!-- 程序集信息 -->
    <AssemblyTitle>Hello World Application</AssemblyTitle>
    <AssemblyDescription>A simple Hello World program</AssemblyDescription>
    <AssemblyVersion>1.0.0.0</AssemblyVersion>
    <FileVersion>1.0.0.0</FileVersion>
  </PropertyGroup>
  
  <!-- NuGet包引用 -->
  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  </ItemGroup>
  
  <!-- 项目引用 -->
  <ItemGroup>
    <ProjectReference Include="..\MyLibrary\MyLibrary.csproj" />
  </ItemGroup>
</Project>

9.2 配置文件

appsettings.json(用于配置):

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=MyDb;Trusted_Connection=true;"
  }
}

10. 高级特性和最佳实践

10.1 现代C#特性示例

// C# 10+ 顶级程序
using System;

// 记录类型
public record Person(string Name, int Age);

// 模式匹配
var person = new Person("张三", 25);
var message = person switch
{
    { Age: < 18 } => "未成年",
    { Age: >= 18 and < 60 } => "成年人",
    _ => "老年人"
};

Console.WriteLine($"Hello, {person.Name}! {message}");

// 可空引用类型
string? nullableString = null;
if (nullableString is not null)
{
    Console.WriteLine(nullableString.Length);
}

10.2 异步编程

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        Console.WriteLine("开始异步操作...");
        
        await DoAsyncWork();
        
        Console.WriteLine("异步操作完成!");
    }
    
    static async Task DoAsyncWork()
    {
        using var client = new HttpClient();
        var response = await client.GetStringAsync("https://api.github.com");
        Console.WriteLine($"响应长度: {response.Length}");
    }
}

10.3 依赖注入

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

class Program
{
    static async Task Main(string[] args)
    {
        var host = Host.CreateDefaultBuilder(args)
            .ConfigureServices(services =>
            {
                services.AddTransient<IGreetingService, GreetingService>();
            })
            .Build();
        
        var greetingService = host.Services.GetRequiredService<IGreetingService>();
        greetingService.Greet("World");
        
        await host.RunAsync();
    }
}

public interface IGreetingService
{
    void Greet(string name);
}

public class GreetingService : IGreetingService
{
    public void Greet(string name)
    {
        Console.WriteLine($"Hello, {name}!");
    }
}

11. 性能优化和调试

11.1 性能分析

# 发布优化版本
dotnet publish -c Release

# 启用ReadyToRun
dotnet publish -c Release -p:PublishReadyToRun=true

# 单文件发布
dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=true

11.2 调试技巧

// 条件编译
#if DEBUG
Console.WriteLine("调试模式");
#endif

// 断言
System.Diagnostics.Debug.Assert(value > 0, "值必须大于0");

// 日志记录
using Microsoft.Extensions.Logging;

// 在Main方法中
using var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
var logger = loggerFactory.CreateLogger<Program>();
logger.LogInformation("程序开始执行");

12. 学习资源和进阶建议

12.1 官方资源

12.2 学习路径

  1. C#基础语法:变量、类型、控制结构
  2. 面向对象编程:类、继承、多态、接口
  3. 集合和泛型:List、Dictionary、LINQ
  4. 异步编程:async/await、Task
  5. 文件和网络操作:I/O、HTTP客户端
  6. 数据库访问:Entity Framework Core
  7. Web开发:ASP.NET Core
  8. 桌面应用:WPF、MAUI

12.3 实践项目建议

  1. 控制台计算器
  2. 文件管理工具
  3. Web API服务
  4. 桌面应用程序
  5. 数据库应用
  6. 微服务架构

12.4 推荐书籍

  • 《C# 10 in a Nutshell》
  • 《Pro C# 10 with .NET 6》
  • 《Clean Code in C#》
  • 《C#并发编程经典实例》

13. C# vs 其他语言对比

特性C#JavaPythonGo
类型系统 静态强类型 静态强类型 动态类型 静态强类型
内存管理 GC GC GC GC
跨平台 是(.NET Core+)
编译方式 JIT/AOT JIT 解释 编译
学习曲线 中等 中等 简单 简单
生态系统 丰富 非常丰富 非常丰富 增长中
企业应用 很强 中等 增长中

14. 完整操作流程总结

# 1. 验证.NET安装
dotnet --version

# 2. 创建新项目
dotnet new console -n HelloWorld
cd HelloWorld

# 3. 编辑Program.cs文件
# 使用文本编辑器或IDE编辑代码

# 4. 运行程序
dotnet run

# 5. 编译程序
dotnet build

# 6. 发布程序
dotnet publish -c Release

# 7. 运行发布的程序
.\bin\Release\net8.0\HelloWorld.exe  # Windows
./bin/Release/net8.0/HelloWorld      # Linux/macOS

15. 故障排除清单

安装问题:

  • [ ] 检查.NET SDK是否正确安装
  • [ ] 验证环境变量PATH配置
  • [ ] 确认防火墙和杀毒软件设置

编译问题:

  • [ ] 检查项目文件(.csproj)语法
  • [ ] 验证目标框架版本
  • [ ] 清理并重新构建项目

运行问题:

  • [ ] 确认运行时版本匹配
  • [ ] 检查依赖项是否完整
  • [ ] 验证文件权限设置

恭喜!您已经成功完成了C# Hello World程序的创建、编译和运行。C#作为一门现代化的面向对象编程语言,为您提供了强大的开发能力和丰富的生态系统。继续探索C#的更多特性,开始您的.NET开发之旅吧!

posted on 2025-06-16 07:09  GKLBB  阅读(120)  评论(0)    收藏  举报