0Pricing
C# Academy · Lektion

Multi-Targeting

Erstellen Sie eine Bibliothek für mehrere Zielframeworks aus einem einzigen Projekt. Verwenden Sie bedingte Kompilierung und Fallback-Shims für API-Unterschiede.

Multi-Targeting ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 3. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.

Konzept und Vorteile

Ziel: Liefern Sie ein Paket aus, das auf mehreren Plattformen funktioniert.

  • Ein einzelnes Projekt erzeugt mehrere Binärdateien
  • Verbraucher erhalten automatisch die am besten passende Assembly
  • Verwenden Sie bei unterschiedlichen APIs kleine #if-Blöcke

Grundlagen der Asset-Auswahl

  • Das Paket enthält Ordner pro Zielplattform (z. B. lib/net45, lib/netstandard2.0)
  • NuGet wählt das nächstgelegene kompatible Asset aus
  • Halten Sie die öffentliche API konsistent; nur der interne Code sollte abweichen

Demo zur bedingten Kompilierung

Verwenden Sie kleine #if-Blöcke, um die Implementierung anzupassen. Die Signatur der öffentlichen Methode muss identisch bleiben.

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

Stabile API, interne Shims

Behalten Sie die gleiche öffentliche API bei; verbergen Sie Unterschiede hinter kleinen Shims, damit Aufrufer nicht berücksichtigen müssen, welches Ziel verwendet wird.

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

Tipps zur Einrichtung

  • Verwenden Sie TargetFrameworks (Plural) im Projekt, um die Zielplattformen aufzulisten
  • Beschränken Sie #if auf kleine Hilfsfunktionen; halten Sie den Großteil des Codes gemeinsam
  • Testen Sie jedes Ziel; führen Sie Unit-Tests pro TFM aus
  • Veröffentlichen Sie ein Paket mit allen Ziel-Assets

Häufige Fallstricke

  • Veröffentlichen Sie nicht je Zielplattform unterschiedliche öffentliche APIs
  • Vermeiden Sie tief verschachtelte #if-Blöcke; verwenden Sie kleine Shims
  • Achten Sie auf implizite Verhaltensunterschiede (Pfade, Codierungen)
  • Dokumentieren Sie alle zielplattformabhängigen Einschränkungen

Warum Multi-Targeting

Kurzer Check: Was ist der wichtigste Vorteil davon, eine Bibliothek für mehrere Zielplattformen zu kompilieren?

Zusammenfassung

Zusammenfassung: Multi-Targeting liefert mehrere Binärdateien aus einem Projekt. Halten Sie die öffentliche API konsistent, verbergen Sie Unterschiede hinter kleinen #if-Shims und packen Sie alle Ziele gemeinsam.

Häufig gestellte Fragen

Ist die Lektion „Multi-Targeting“ kostenlos?

Ja — der vollständige Text von „Multi-Targeting“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 3 Lektionen.

Was lerne ich in „Multi-Targeting“?

Erstellen Sie eine Bibliothek für mehrere Zielframeworks aus einem einzigen Projekt. Verwenden Sie bedingte Kompilierung und Fallback-Shims für API-Unterschiede. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 3.

Wie lange dauert die Lektion „Multi-Targeting“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Bibliotheks- und App-.csproj, semantische Versionierung
  2. Packen und Veröffentlichen auf NuGet
  3. Multi-Targeting
← Zurück zu C# Academy