首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Linux 上執行 C#:Mono 專案安裝與跨平台開發入門

     編輯:關於C語言

背景

.NET 策略目標之一是跨平台。Mono 是開源實作,讓 C#/.NET 程式在 Linux、macOS、Unix 執行。現今 .NET Core / .NET 5+ 已原生跨平台,Mono 仍用於 Unity、舊版 Xamarin、嵌入式場景。

Mono 安裝 (傳統編譯方式)


# 1. 安裝相依套件 (以 CentOS/RHEL 為例)
yum install -y gcc make autoconf libtool gettext \
    glib2-devel pkgconfig zlib-devel

# 2. 下載 Mono 原始碼
wget https://download.mono-project.com/sources/mono/mono-6.12.0.tar.xz
tar xf mono-6.12.0.tar.xz
cd mono-6.12.0

# 3. 編譯安裝
./configure --prefix=/usr/local
make -j$(nproc)
make install

# 4. 驗證
mono --VERSION
# Mono JIT compiler version 6.12.0 ...

現代 Linux 發布版可直接用套件管理器安裝:


# Ubuntu/Debian
apt update && apt install -y mono-complete

# CentOS/RHEL (需啟用 EPEL)
yum install -y epel-release && yum install -y mono-complete

# Arch
pacman -S mono

Hello World 測試


// Hello.cs
using System;
class Hello {
    static void Main() {
        Console.WriteLine("Hello Linux from C#!");
        Console.WriteLine($"Runtime: {Environment.Version}");
        Console.WriteLine($"OS: {Environment.OSVersion}");
    }
}

# 編譯
mcs Hello.cs        # 產生 Hello.exe (IL)

# 執行 (解譯器)
mint Hello.exe      # 較慢,適合除錯

# 執行 (JIT 編譯器,預設)
mono Hello.exe      # 生產環境用

跨平台關鍵差異與注意事項

面向Windows (.NET Framework)Linux (Mono / .NET Core)
路徑分隔符\/ (用 Path.DirectorySeparatorChar)
換行符\r\n\n (用 Environment.NewLine)
大小寫敏感不敏感**敏感** (檔案系統、型別名稱)
登錄表有無 (用設定檔/環境變數)
COM/ActiveX支援不支援
System.Drawing (GDI+)原生需 libgdiplus,**建議改用 ImageSharp**
WPF/WinForms原生Mono 部分支援 WinForms,**建議遷移至 Avalonia / MAUI / Blazor**

現代化選擇:.NET 8+ (原生跨平台)

**新專案請直接使用 .NET 8+ SDK**,無需 Mono:


# 安裝 .NET 8 SDK (Microsoft 官方倉庫)
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -i packages-microsoft-prod.deb
apt update && apt install -y dotnet-sdk-8.0

# 建立專案
dotnet new console -n MyApp
cd MyApp
dotnet run
# 自動編譯、執行,原生 Linux 執行檔 (無需 mono)

GUI 開發選項

  • Avalonia UI:XAML 風格、跨平台 (Linux/Windows/macOS/WebAssembly)、支援 .NET 8、類 WPF 體驗。
  • .NET MAUI:單一專案構建行動/桌面應用,Linux 支援透過社群 (非官方完整支援)。
  • Blazor Hybrid (Blazor + WebView2/GTK WebKit):Web 技術建構桌面應用。
  • GTK# / GtkSharp:Mono 時代遺產,維護模式。

遷移檢查清單

  • [ ] 移除所有 `Registry` 存取,改用 `IConfiguration` / JSON / 環境變數。
  • [ ] 替換 `System.Drawing` → `SixLabors.ImageSharp` / `SkiaSharp`。
  • [ ] 檢查路徑硬編碼,統一用 `Path.Combine`、`Path.Join`。
  • [ ] P/Invoke 呼叫 Windows API → 移除或抽象介面換 Linux 實作 (`libc`、`libdl`)。
  • [ ] 測試大小寫敏感檔案存取。
  • [ ] CI/CD 加入 Linux 建置/測試階段 (GitHub Actions / GitLab CI)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved