C# Academy · Les

Multi-targeting

Bouw vanuit één project één library voor meerdere target frameworks; gebruik conditional compilation en fallback-shims voor API-verschillen.

Les 3 van 38 stappen

Multi-targeting is een gratis C# Academy-les op CoddyKit. Dit is les 3 van 3. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C# Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C# Academy bevat in totaal 3 lessen.

Concept en voordelen

Doel: lever één pakket dat op meerdere platforms werkt.

  • Eén project maakt meerdere binaire bestanden
  • Gebruikers krijgen automatisch de best passende assembly
  • Gebruik kleine #if-controles wanneer API's verschillen

Basisprincipes van onderdeelselectie

  • Het pakket bevat mappen per doelplatform (bijv. lib/net45, lib/netstandard2.0)
  • NuGet kiest het dichtstbijzijnde compatibele onderdeel
  • Houd de openbare API consistent; alleen de interne code mag verschillen

Demonstratie van voorwaardelijke compilatie

Gebruik kleine #if-blokken om de implementatie te variëren. Houd de handtekening van de openbare methode identiek.

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

Stabiele API, interne tussenlagen

Behoud dezelfde openbare API; verberg verschillen achter kleine tussenlagen, zodat aanroepers niet hoeven te weten welk doelplatform wordt gebruikt.

#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 voor de configuratie

  • Gebruik TargetFrameworks (meervoud) in het project om doelplatforms op te sommen
  • Beperk #if tot kleine hulpfuncties; houd het grootste deel van de code gedeeld
  • Test elk doelplatform; voer per TFM eenheidstests uit
  • Publiceer één pakket met alle onderdelen voor de doelplatforms

Veelvoorkomende valkuilen

  • Stel niet per doelplatform verschillende openbare API's beschikbaar
  • Vermijd diep geneste #if-blokken; gebruik kleine tussenlagen
  • Let op impliciete gedragsverschillen (paden, coderingen)
  • Documenteer beperkingen die specifiek zijn voor een doelplatform

Waarom meerdere doelplatforms

Korte controle: wat is het belangrijkste voordeel van het ondersteunen van meerdere doelplatforms voor een bibliotheek?

Samenvatting

Samenvatting: met ondersteuning voor meerdere doelplatforms lever je vanuit één project verschillende binaire bestanden. Houd de openbare API consistent, verberg verschillen achter kleine #if-tussenlagen en verpak alle doelplatforms samen.

Gratis beginnen

Leer C# met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
93
Lessen
346

Veelgestelde vragen

Is de les “Multi-targeting” gratis?

Ja — de volledige tekst van “Multi-targeting” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus C# Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus C# Academy bevat in totaal 3 lessen.

Wat leer ik in “Multi-targeting”?

Bouw vanuit één project één library voor meerdere target frameworks; gebruik conditional compilation en fallback-shims voor API-verschillen. Je oefent met C# Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met C# Academy te beginnen?

Ervaring vooraf is niet nodig. C# Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 3.

Hoe lang duurt de les “Multi-targeting”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over C# Academy?

Ja. Elke les over C# Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Bibliotheek versus app-.csproj, semantic versioning
  2. Packen en publiceren naar NuGet
  3. Multi-targeting
← Terug naar C# Academy