C# Academy · leksjon

Multi-targeting

Bygg ett bibliotek for flere målrammeverk fra ett enkelt prosjekt, og bruk betinget kompilering og fallback-shims for forskjeller i API-er.

Leksjon 3 av 38 trinn

Multi-targeting er en gratis leksjon i C# Academy på CoddyKit. Dette er leksjon 3 av 3. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i C# Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i C# Academy inneholder totalt 3 leksjoner.

Konsept og fordeler

Mål: Lever én pakke som fungerer på flere plattformer.

  • Ett prosjekt produserer flere binærfiler
  • Forbrukerne får automatisk den best egnede assemblyen
  • Bruk små #if-betingelser når API-er er forskjellige

Grunnleggende om valg av assets

  • Pakken inneholder mapper for hvert mål (for eksempel lib/net45, lib/netstandard2.0)
  • NuGet velger den nærmeste kompatible ressursen
  • Hold det offentlige API-et konsistent; bare intern kode bør være forskjellig

Demonstrasjon av betinget kompilering

Bruk små #if-blokker for å variere implementasjonen. Hold signaturen til den offentlige metoden identisk.

#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
  }
}

Stabilt API, interne shims

Behold det samme offentlige API-et; skjul forskjeller bak små shims, slik at kallere ikke trenger å vite hvilket mål som brukes.

#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));
  }
}

Tips for oppsett

  • Bruk TargetFrameworks (flertall) i prosjektet for å liste opp mål
  • Begrens #if til små hjelpefunksjoner; hold mest mulig kode felles
  • Test hvert mål; kjør enhetstester for hvert TFM
  • Publiser én pakke med alle målressursene

Vanlige fallgruver

  • Ikke eksponer forskjellige offentlige API-er for hvert mål
  • Unngå dype #if-nestinger; bruk små shims
  • Vær oppmerksom på implisitte forskjeller i atferd (baner, kodinger)
  • Dokumenter eventuelle begrensninger som gjelder for bestemte mål

Hvorfor multi-targeting

Rask sjekk: Hva er den viktigste fordelen ved å bruke multi-targeting for et bibliotek?

Oppsummering

Oppsummering: Multi-targeting leverer flere binærfiler fra ett prosjekt. Hold det offentlige API-et konsistent, skjul forskjeller bak små #if-shims, og pakk alle mål sammen.

Gratis å komme i gang

Lær deg C# med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
93
Leksjoner
346

Ofte stilte spørsmål

Er leksjonen «Multi-targeting» gratis?

Ja – hele teksten i «Multi-targeting» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av C# Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i C# Academy inneholder totalt 3 leksjoner.

Hva lærer jeg i «Multi-targeting»?

Bygg ett bibliotek for flere målrammeverk fra ett enkelt prosjekt, og bruk betinget kompilering og fallback-shims for forskjeller i API-er. Du øver på C# Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med C# Academy?

Ingen tidligere erfaring er nødvendig. C# Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 3.

Hvor lang tid tar leksjonen «Multi-targeting»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne C# Academy-leksjonen?

Ja. Alle C# Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Bibliotek kontra app-.csproj og semantisk versjonering
  2. Pakking og publisering til NuGet
  3. Multi-targeting
← Tilbake til C# Academy