কম্পিউটার টিউটোরিয়াল

লিনাক্সে C# কোড এক্সিকিউট করা (Mono ব্যবহার করে)

Mono কী?

Mono হলো একটি ওপেন-সোর্স, ক্রস-প্ল্যাটফর্ম .NET ইমপ্লিমেন্টেশন যা Windows-বाहিরের OS-এ (Linux, macOS, Android, iOS, WebAssembly) .NET অ্যাপ্লিকেশন চালাতে সক্ষম করে। এটি Microsoft-এর অফিশিয়াল .NET Core / .NET 5+ এর পূর্ব신 lehet değişken oldu, কিন্তু এখনও লিগেসি বা নির্দিষ্ট প্ল্যাটফর্মে প্রাসঙ্গিক।

লিনাক্সে Mono ইনস্টলেশন (Ubuntu/Debian/Kali)


# প্যাকেজ আপডেট
sudo apt update

# Mono কমপ্লিট প্যাকেজ ইনস্টল
sudo apt install mono-complete

# যাচাই
mono --version
mcs --version

অথবা অফিশিয়াল Mono রেপো থেকে (নতুন ভার্সনের জন্য):


sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update
sudo apt install mono-complete

C# কোড কম্পাইল ও রান

১. সোর্স ফাইল তৈরি (test.cs)


using System;

namespace LinuxTest {
    class Program {
        public static void Main(string[] args) {
            Console.WriteLine("C# app running on Linux via Mono!");
            Console.WriteLine($"OS: {Environment.OSVersion}");
            Console.WriteLine($"Runtime: {Environment.Version}");
            Console.WriteLine($"Args: {string.Join(", ", args)}");
        }
    }
}

২. কম্পাইল (mcs - Mono C# Compiler)


mcs test.cs
# আউটপুট: test.exe (Windows-style EXE, কিন্তু Linux-এ mono দিয়ে চলে)

৩. এক্সিকিউট


# পদ্ধতি ১: mono রানটাইম দিয়ে
mono test.exe

# পদ্ধতি ২: সরাসরি (যদি binfmt_misc কনফিগার্ড থাকে)
./test.exe

# আর্গুমেন্ট পাস
mono test.exe arg1 arg2 "hello world"

আউটপুট:

C# app running on Linux via Mono!
OS: Unix 5.15.0.xxx
Runtime: 6.12.0 (tarball)
Args: arg1, arg2, hello world

.NET Core / .NET 5+ (আধুনিক, প্রস্তাবিত পথ)

Mono-এর পরিবর্তে আজকাল .NET SDK সরাসরি লিনাক্সে ইনস্টল করা ভালো:


# Microsoft অফিশিয়াল রেপো (Ubuntu 22.04)
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
sudo apt update
sudo apt install dotnet-sdk-8.0

# যাচাই
dotnet --version

# নতুন কনসোল অ্যাপ
dotnet new console -n MyApp
cd MyApp
dotnet run

Mono vs .NET Core/.NET 5+ তুলনা

বিষয়Mono.NET Core / .NET 5+
স্ট্যাটাসমেইনটেনেন্স মোড (লিগেসি সাপোর্ট)সক্রিয় ডেভেলপমেন্ট, LTS রিলিজ
API কভারেজ.NET Framework 4.x সমতুল্য.NET Standard 2.0+, মডার্ন API
পারফরম্যান্সমাঝারিউচ্চ (JIT, AOT, Tiered Compilation)
ASP.NET Coreসীমিতপূর্ণ সাপোর্ট
AOT কম্পাইলেশনহ্যাঁ (Mono AOT)হ্যাঁ (Native AOT, .NET 7+)
WebAssemblyপ্রাথমিক (Blazor এর আগে)পূর্ণ সাপোর্ট (Blazor WASM)

GUI অ্যাপ্লিকেশন (WinForms/WPF) লিনাক্সে

  • Mono: WinForms সাপোর্ট করে (System.Windows.Forms), WPF নয়
  • .NET 6+: WinForms/WPF লিনাক্সে সাপোর্টেড নয় (Windows-only)
  • বিকল্প: Avalonia, Uno Platform, MAUI (Linux GTK 백엔্ড), Electron.NET

সতর্কতা

  • Mono-র `mcs` কম্পাইলার C# 7.0+ ফিচার ফুল সাপোর্ট করে না
  • ফাইল পাথ: লিনাক্সে `/` ব্যবহার করুন, `@"C:\Path"` কাজ করবে না
  • কেস-সেনসিটিভ ফাইল সিস্টেম — namespace/class নাম মেলাতে হবে
  • নেটিভ লাইব্রেরি (P/Invoke) — `.dll` বদলে `.so` ফাইল দরকার
  1. Windows Update Error Code 643 কীভাবে ফিক্স করবেন

  2. Windows 10-এ Error Code 0x643 সমাধান

  3. .NET Framework 3.5 ইনস্টলেশন ত্রুটি 0x800f0922 সমাধান - ধাপে ধাপে ফিক্স

  4. উইন্ডোজ ফায়ারওয়াল ত্রুটি 0x80070422 সমাধান এবং ফায়ারওয়াল পুনরায় সক্ষম করা