Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Lorsque vous créez un projet pour la première fois, nous vous recommandons de créer une bibliothèque de classes .NET Standard, car elle offre une compatibilité avec la plus grande gamme de projets consommants. En utilisant .NET Standard, vous ajoutez la prise en charge multiplateforme à une bibliothèque .NET par défaut. Toutefois, dans certains scénarios, vous devrez peut-être également inclure du code qui cible une infrastructure particulière. Cet article explique comment procéder pour les projets de style SDK .
Pour les projets de style SDK, vous pouvez configurer la prise en charge de plusieurs frameworks cibles (TFM) dans votre fichier projet, puis utiliser dotnet pack ou msbuild /t:pack créer le package.
Note
nuget.exe CLI ne prend pas en charge l’empaquetage de projets de style SDK. Vous devez donc uniquement utiliser dotnet pack ou msbuild /t:pack. Nous vous recommandons d’inclure toutes les propriétés qui se trouvent généralement dans le .nuspec fichier du projet à la place. Pour cibler plusieurs versions de .NET Framework dans un projet de style non SDK, consultez Prise en charge de plusieurs versions de .NET Framework.
Créer un projet qui prend en charge plusieurs versions de .NET Framework
Créez une bibliothèque de classes .NET Standard dans Visual Studio ou utilisez
dotnet new classlib.Nous vous recommandons de créer une bibliothèque de classes .NET Standard pour une meilleure compatibilité.
Modifiez le fichier .csproj pour prendre en charge les frameworks cibles. Par exemple, modifier
<TargetFramework>netstandard2.0</TargetFramework>to:
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>Veillez à modifier l’élément XML passé du singulier au pluriel (ajoutez les « s » aux balises ouvertes et fermées).
Si vous avez du code qui fonctionne uniquement dans un TFM, vous pouvez utiliser
#if NET45ou#if NETSTANDARD2_0séparer le code dépendant de TFM. (Pour plus d’informations, consultez Guide pratique pour multitarget.) Par exemple, vous pouvez utiliser le code suivant :public string Platform { get { #if NET45 return ".NET Framework" #elif NETSTANDARD2_0 return ".NET Standard" #else #error This code block does not match csproj TargetFrameworks list #endif } }Ajoutez les métadonnées NuGet que vous souhaitez à .csproj en tant que propriétés MSBuild.
Pour obtenir la liste des métadonnées de package disponibles et des noms de propriétés MSBuild, consultez la cible du pack. Consultez également Contrôle des ressources de dépendance.
Si vous souhaitez séparer les propriétés liées à la génération des métadonnées NuGet, vous pouvez utiliser une autre
PropertyGrouppropriété, ou placer les propriétés NuGet dans un autre fichier et utiliser la directive MSBuildImportpour l’inclure.Directory.Build.PropsetDirectory.Build.Targetssont également pris en charge à partir de MSBuild 15.0.À présent, utilisez
dotnet packet le .nupkg résultant cible à la fois .NET Standard 2.0 et .NET Framework 4.5.
Voici le fichier .csproj généré à l’aide des étapes précédentes et du SDK .NET Core 2.2.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
<Description>Sample project that targets multiple TFMs</Description>
</PropertyGroup>
</Project>