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
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
- Bibliothèque ou application .csproj et gestion sémantique des versions
- Empaquetage et publication sur NuGet
- Ciblage de plusieurs frameworks