CS proj SDK Style : cibler plusieurs frameworks avec un seul csproj
Aujourd’hui, je voulais faire en sorte que la dll cible plusieurs versions du framework.
Or, avant le csproj de type “SDK style”, il fallait faire un fichier csproj par framework cible, ce qui était long et fastidieux.
Désormais, avec le nouveau format de csproj, nous avons une nouvelle propriété appelée TargetFrameworks qui permet de générer notre dll dans différents formats de dll avec un seul csproj.
Si je veux que ma dll soit compilée en .Net Standard 2.0 et que je veux supporter aussi le .Net standard 1.3, il me suffira de remplacer la ligne suivante :
1
|
< TargetFramework >netstandard1.3</ TargetFramework > |
Par :
1
|
< TargetFrameworks >netstandard1.3;netstandard2.0</ TargetFrameworks > |
Désormais le répertoire de sortie comporte deux répertoires :
Note : Vous pouvez trouver la liste des valeurs acceptées par le nœud TargetFrameworks ici
Ajouter un package nuget pour une version précise
Dans mon cas, si je cible .net standard 1.3, je veux rajouter une référence vers le nuget de System.Xml.XmlSerializer car la classe XmlSerialization n’est arrivée qu'en .Net Standard 2.0.
Ajout du package nuget uniquement lorsque l’on cible netstandard1.3 :
Pour pouvoir ajouter un package nuget uniquement lorsque je suis en .Net Standard 1.3, je vais vérifier que la variable TargetFramework est égale à netstandard1.3.
1
2
3
|
< ItemGroup Condition = " $(TargetFramework) =='netstandard1.3' " > < PackageReference Include = "System.Xml.XmlSerializer" Version=" 4.3.0/> </ ItemGroup /> |
L’explorateur de solution nous permet de vérifier en un coup d’œil que notre configuration est bien prise en compte. On remarque dans l’image ci dessous que le package nuget System.Xml.XmlSerializer n’est ajouté que pour la configuration netstandard1.3.
Happy coding.
Commentaires