0Pricing
C# Academy · Leçon

Ciblage de plusieurs frameworks

Construisez une bibliothèque pour plusieurs frameworks cibles à partir d’un seul projet ; utilisez la compilation conditionnelle et des couches de compatibilité de repli pour les différences d’API.

Ciblage de plusieurs frameworks est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.

Concept et avantages

Objectif : publier un package qui fonctionne sur plusieurs plateformes.

  • Un seul projet produit plusieurs binaires
  • Les utilisateurs obtiennent automatiquement l’assembly le mieux adapté
  • Utilisez de petites protections #if lorsque les API diffèrent

Principes de base de la sélection des ressources

  • Le package contient des dossiers pour chaque cible (par exemple, lib/net45, lib/netstandard2.0)
  • NuGet choisit la ressource compatible la plus proche
  • Conservez une API publique cohérente ; seul le code interne doit différer

Démonstration de la compilation conditionnelle

Utilisez de petits blocs #if pour faire varier l’implémentation. Conservez une signature de méthode publique identique.

#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 stable, adaptations internes

Conservez la même API publique ; masquez les différences derrière de petites adaptations afin que les appelants n’aient pas à se soucier de la cible utilisée.

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

Conseils de configuration

  • Utilisez TargetFrameworks (au pluriel) dans le projet pour répertorier les cibles
  • Limitez #if à de petites fonctions auxiliaires ; partagez la majeure partie du code
  • Testez chaque cible ; exécutez les tests unitaires pour chaque TFM
  • Publiez un seul package contenant les ressources de toutes les cibles

Pièges courants

  • N’exposez pas d’API publiques différentes selon la cible
  • Évitez les imbrications profondes de #if ; utilisez de petites adaptations
  • Surveillez les différences implicites de comportement (chemins, encodages)
  • Documentez toute limitation propre à une cible

Pourquoi utiliser plusieurs cibles

Vérification rapide : quel est le principal avantage de compiler une bibliothèque pour plusieurs cibles ?

Récapitulatif

Récapitulatif : la compilation pour plusieurs cibles produit plusieurs binaires à partir d’un seul projet. Conservez une API publique cohérente, masquez les différences derrière de petites adaptations #if et regroupez toutes les cibles dans le même package.

Questions Fréquemment Posées

La leçon « Ciblage de plusieurs frameworks » est-elle gratuite ?

Oui — le texte complet de « Ciblage de plusieurs frameworks » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.

Qu'est-ce que j'apprendrai dans « Ciblage de plusieurs frameworks » ?

Construisez une bibliothèque pour plusieurs frameworks cibles à partir d’un seul projet ; utilisez la compilation conditionnelle et des couches de compatibilité de repli pour les différences d’API. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 3.

Combien de temps prend la leçon « Ciblage de plusieurs frameworks » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Bibliothèque ou application .csproj et gestion sémantique des versions
  2. Empaquetage et publication sur NuGet
  3. Ciblage de plusieurs frameworks
← Retour à C# Academy