Multi-targeting
Create una libreria per più framework di destinazione da un singolo progetto; usate la compilazione condizionale e shim di fallback per le differenze tra API.
Multi-targeting è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 3 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 3 lezioni in totale.
Concetto e vantaggi
Obiettivo: distribuisca un unico pacchetto compatibile con più piattaforme.
- Un singolo progetto produce più binari
- I consumer ricevono automaticamente l'assembly più adatto
- Utilizzi piccole direttive #if quando le API differiscono
Nozioni di base sulla selezione degli asset
- Il pacchetto contiene cartelle per ogni target (ad esempio lib/net45, lib/netstandard2.0)
- NuGet seleziona l'asset compatibile più vicino
- Mantenga coerente l'API pubblica; solo il codice interno dovrebbe differire
Dimostrazione della compilazione condizionale
Utilizzi piccoli blocchi #if per variare l'implementazione. Mantenga identica la firma del metodo pubblico.
#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 stabile e shim interni
Mantenga la stessa API pubblica; nasconda le differenze dietro piccoli shim, così ai chiamanti non importa quale target venga utilizzato.
#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));
}
}
Suggerimenti per la configurazione
- Utilizzi TargetFrameworks (al plurale) nel progetto per elencare i target
- Limiti #if a piccoli helper; mantenga condivisa la maggior parte del codice
- Testi ogni target; esegua gli unit test per ogni TFM
- Pubblici un unico pacchetto con tutti gli asset dei target
Problemi comuni
- Non esponga API pubbliche diverse per ogni target
- Eviti annidamenti profondi di #if; utilizzi piccoli shim
- Faccia attenzione alle differenze di comportamento implicite (percorsi, codifiche)
- Documenti le eventuali limitazioni specifiche del target
Perché usare più target
Riepilogo
Riepilogo: l'utilizzo di più target consente di distribuire diversi binari da un unico progetto. Mantenga coerente l'API pubblica, nasconda le differenze dietro piccoli shim #if e inserisca tutti i target nello stesso pacchetto.
Domande Frequenti
La lezione «Multi-targeting» è gratuita?
Sì — il testo completo di «Multi-targeting» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 3 lezioni in totale.
Cosa imparerò in «Multi-targeting»?
Create una libreria per più framework di destinazione da un singolo progetto; usate la compilazione condizionale e shim di fallback per le differenze tra API. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 3.
Quanto tempo richiede la lezione «Multi-targeting»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.