0Pricing
C# Academy · Pelajaran

Penargetan multipel

Bangun satu pustaka untuk beberapa kerangka kerja target dari satu proyek; gunakan kompilasi bersyarat dan shim cadangan untuk perbedaan API.

Penargetan multipel adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 3 pelajaran total.

Konsep & manfaat

Tujuan: Rilis satu paket yang berfungsi di berbagai platform.

  • Satu proyek menghasilkan beberapa berkas biner
  • Pengguna otomatis mendapatkan rakitan yang paling sesuai
  • Gunakan penjaga kecil #if saat API berbeda

Dasar-dasar pemilihan aset

  • Paket berisi folder untuk setiap target (misalnya, lib/net45, lib/netstandard2.0)
  • NuGet memilih aset yang paling dekat dan kompatibel
  • Jaga agar API publik tetap konsisten; hanya kode internal yang boleh berbeda

Demo kompilasi bersyarat

Gunakan blok kecil #if untuk memvariasikan implementasi. Pertahankan tanda tangan metode publik agar tetap sama.

#define NET45   // simulate building for different targets
// #define NETSTANDARD2_0

using System;

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine("Target: " + TargetName());
  }

  // Public API: stays the same across targets
  public static string TargetName()
  {
#if NET45
    return "net45 build";
#elif NETSTANDARD2_0
    return "netstandard2.0 build";
#else
    return "unknown target";
#endif
  }
}

API stabil, lapisan penyesuai internal

Pertahankan API publik yang sama; sembunyikan perbedaan di balik lapisan penyesuai kecil agar pemanggil tidak perlu mengetahui target yang digunakan.

#define NET45

using System;
using System.IO;

public class Program
{
  // Public API is stable; internal implementation differs.
  public static string ReadAllTextCompat(string path)
  {
#if NET45
    // net45 has File.ReadAllText; use it directly.
    return File.ReadAllText(path);
#else
    // Example shim path (for an older TF that lacks some helper API)
    using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read))
    using (var sr = new StreamReader(fs))
    {
      return sr.ReadToEnd();
    }
#endif
  }

  public static void Main(string[] args)
  {
    // For demo, write then read
    string p = "demo.txt";
    File.WriteAllText(p, "hello");
    Console.WriteLine(ReadAllTextCompat(p));
  }
}

Kiat penyiapan

  • Gunakan TargetFrameworks (bentuk jamak) dalam proyek untuk mencantumkan target
  • Batasi #if pada helper kecil; gunakan sebagian besar kode secara bersama
  • Uji setiap target; jalankan pengujian unit untuk setiap TFM
  • Publikasikan satu paket dengan semua aset target

Kesalahan umum

  • Jangan mengekspos API publik yang berbeda untuk setiap target
  • Hindari susunan #if yang bertingkat dalam; gunakan lapisan penyesuai kecil
  • Perhatikan perbedaan perilaku tersirat (jalur, pengodean)
  • Dokumentasikan setiap keterbatasan khusus target

Alasan menggunakan beberapa target

Pemeriksaan singkat: Apa manfaat utama menggunakan beberapa target untuk sebuah pustaka?

Rangkuman

Rangkuman: Penggunaan beberapa target menghasilkan beberapa berkas biner dari satu proyek. Jaga agar API publik tetap konsisten, sembunyikan perbedaan di balik lapisan penyesuai #if yang kecil, dan kemas semua target bersama-sama.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Penargetan multipel” gratis?

Ya — teks lengkap “Penargetan multipel” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Penargetan multipel”?

Bangun satu pustaka untuk beberapa kerangka kerja target dari satu proyek; gunakan kompilasi bersyarat dan shim cadangan untuk perbedaan API. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C# Academy?

Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.

Berapa lama pelajaran “Penargetan multipel” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?

Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. csproj pustaka vs aplikasi, pembuatan versi semantik
  2. Pengemasan & publikasi ke NuGet
  3. Penargetan multipel
← Kembali ke C# Academy