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
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
- csproj pustaka vs aplikasi, pembuatan versi semantik
- Pengemasan & publikasi ke NuGet
- Penargetan multipel