CsProj SDK Style : cibler plusieurs frameworks avec un seul csproj

CsProj 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 :

<TargetFramework>netstandard1.3</TargetFramework>

Par :

<TargetFrameworks>netstandard1.3;netstandard2.0</TargetFrameworks>

Désormais le répertoire de sortie comporte deux répertoires :

Note : Vous pouvez trouver ici 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é que 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.

<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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Pin It on Pinterest