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

- Auteur: Jérôme Giacomini
- Langue: fr
- URL canonique: [CsProj SDK Style : cibler plusieurs frameworks avec un seul csproj](https://jeromegiacomini.net/fr/articles/2018/09/11/cibler-plusieurs-frameworks-un-csproj)
- Publié le: 2018-09-11
- Dernière modification: 2026-09-05
- Thèmes: .NET, C#

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 :

```xml

<TargetFramework>netstandard1.3</TargetFramework>
```


Par :

```xml

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


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

![](https://jeromegiacomini.net/Blog/wp-content/uploads/2018/09/output.png)

**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&#8217;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**.

```xml

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

![](https://jeromegiacomini.net/Blog/wp-content/uploads/2018/09/csprojsdkStyle.png)

Happy coding.
