Partager via


Utiliser des kits SDK de projet MSBuild

Vous pouvez référencer toute l’infrastructure de build requise pour une pile de technologies de développement, comme le KIT DE développement logiciel (SDK) .NET, en référençant simplement un ensemble de propriétés et de cibles collectivement appelées SDK de projet par son ID spécifique. L’ID fait référence à un ensemble particulier de fichiers qui contiennent des définitions de .props propriétés et .targets des fichiers qui contiennent des définitions cibles. Vous référencez un Kit de développement logiciel (SDK) de projet à l’aide de l’attribut Sdk sur le nœud de projet de niveau supérieur.

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net46</TargetFramework>
    </PropertyGroup>
</Project>

Lors de l’évaluation du projet, MSBuild ajoute des importations implicites en haut et en bas du fichier projet :

<Project>
    <!-- Implicit top import -->
    <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />

    <PropertyGroup>
        <TargetFramework>net46</TargetFramework>
    </PropertyGroup>

    <!-- Implicit bottom import -->
    <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>

Il existe de nombreux kits SDK distribués par Microsoft. Le Kit de développement logiciel (SDK) du projet référencé dans l’exemple précédent a le moniker Microsoft.NET.Sdk. Les kits SDK de projet associés à .NET Core et .NET 5 et versions ultérieures sont répertoriés dans la vue d’ensemble du Kit de développement logiciel (SDK) du projet .NET.

Référencer un SDK de projet

Il existe trois façons de référencer un Kit de développement logiciel (SDK) de projet :

Utiliser l’attribut Sdk sur l’élément Project

<Project Sdk="My.Custom.Sdk">
    ...
</Project>

Une importation implicite est ajoutée en haut et en bas du projet, comme indiqué précédemment.

Pour spécifier une version spécifique du Kit de développement logiciel (SDK), ajoutez-le à l’attribut Sdk :

<Project Sdk="My.Custom.Sdk/1.2.3">
    ...
</Project>

Utiliser l’élément de niveau Sdk supérieur

<Project>
    <Sdk Name="My.Custom.Sdk" Version="1.2.3" />
    ...
</Project>

Une importation implicite est ajoutée en haut et en bas du projet, comme indiqué précédemment.

L’attribut Version n’est pas nécessaire.

Utilisez l’élément Import n’importe où dans votre projet.

<Project>
    <PropertyGroup>
        <MyProperty>Value</MyProperty>
    </PropertyGroup>
    <Import Project="Sdk.props" Sdk="My.Custom.Sdk" />
    ...
    <Import Project="Sdk.targets" Sdk="My.Custom.Sdk" />
</Project>

Lorsque vous incluez explicitement les importations dans votre projet, vous avez un contrôle total sur la commande.

Lorsque vous utilisez l’élément Import , vous pouvez également spécifier un attribut facultatif Version . Par exemple, vous pouvez spécifier <Import Project="Sdk.props" Sdk="My.Custom.Sdk" Version="1.2.3" />.

Avertissement

Si vous modifiez votre projet pour utiliser Import comme éléments, veillez à ajouter à la fois les importations .props et .targets, et à supprimer le SDK de l’élément Project et des éléments Sdk. Si vous ne le faites pas, cela entraînera des importations dupliquées et un MSB4011 avertissement.

Comment les kits SDK de projet sont résolus

Lors de l’évaluation de l’importation, MSBuild résout dynamiquement le chemin d’accès au Kit de développement logiciel (SDK) du projet en fonction du nom et de la version que vous avez spécifiés. MSBuild dispose également d’une liste de résolveurs de SDK inscrits, qui sont des plug-ins qui recherchent des kits SDK de projet sur votre ordinateur. Ces plug-ins incluent :

  • Programme de résolution basé sur NuGet qui interroge vos flux de package configurés pour les packages NuGet qui correspondent à l’ID et à la version du Kit de développement logiciel (SDK) que vous avez spécifiés.

    Ce programme de résolution est actif uniquement si vous avez spécifié une version facultative. Il peut être utilisé pour n’importe quel kit SDK de projet personnalisé.

  • Programme de résolution du SDK .NET qui résout les kits SDK MSBuild installés avec le Kit de développement logiciel (SDK) .NET.

    Ce programme de résolution localise les kits SDK de projet tels que Microsoft.NET.Sdk et Microsoft.NET.Sdk.Web qui font partie du produit.

  • Programme de résolution par défaut qui résout les kits SDK installés avec MSBuild.

Le programme de résolution du KIT de développement logiciel (SDK) NuGet prend en charge la spécification d’une version dans le fichier global.json , ce qui vous permet de contrôler la version du Kit de développement logiciel (SDK) du projet à un seul endroit plutôt que dans chaque projet individuel :

{
    "msbuild-sdks": {
        "My.Custom.Sdk": "5.0.0",
        "My.Other.Sdk": "1.0.0-beta"
    }
}

Une seule version de chaque Kit de développement logiciel (SDK) de projet peut être utilisée pendant une build. Si vous référencez deux versions différentes du même Kit de développement logiciel (SDK) de projet, MSBuild émet un avertissement. Il est recommandé de ne pas spécifier de version dans vos projets si une version est spécifiée dans le fichier global.json .