Configurer des projets pour des plateformes cibles

Visual Studio vous permet de configurer vos builds d’application pour cibler différentes plateformes (architectures de processeur), notamment Arm64 et d’autres plateformes. Vous n’avez pas besoin d’exécuter Visual Studio sur une plateforme pour générer cette plateforme cible. Pour plus d’informations sur la prise en charge d’Arm64 dans Visual Studio, consultez Visual Studio sur les appareils alimentés par ARM. Pour la prise en charge des plateformes 64 bits pour le développement .NET, consultez les applications 64 bits.

Notes

Visual Studio 2022 s’exécute en tant qu’application 64 bits. Cela est totalement distinct des plateformes que vous pouvez cibler pour vos projets dans Visual Studio. Vous pouvez utiliser n’importe quelle version de Visual Studio pour cibler les plateformes 32 bits et 64 bits.

Visual Studio vous permet de configurer vos builds d’application pour cibler différentes plateformes (architectures de processeur), telles que x86 et x64. Pour la prise en charge des plateformes 64 bits pour le développement .NET, consultez les applications 64 bits.

Notes

Visual Studio s’exécute en tant qu’application 32 bits. Cela est totalement distinct des plateformes que vous pouvez cibler pour vos projets dans Visual Studio. Vous pouvez utiliser n’importe quelle version de Visual Studio pour cibler les plateformes 32 bits et 64 bits.

Cibler des plateformes avec le Gestionnaire de configurations

Le Gestionnaire de configurations vous permet d’ajouter rapidement une nouvelle plateforme à cibler avec votre projet. Si vous sélectionnez l’une des plateformes incluses dans Visual Studio, une configuration est mise en place pour générer votre projet pour la plateforme sélectionnée.

Pour cibler certaines plateformes dans un projet C++ natif, vous devez installer les outils de génération pour la plateforme. Les outils de génération C++ pour les plateformes x86 et x64 sont installés avec la charge de travail C++ par défaut. Si vous ciblez une autre architecture de processeur, comme Arm64, vous devez utiliser Visual Studio Installer pour installer les outils de génération de la plateforme avant de continuer. Consultez Modifier Visual Studio. Vous n’avez pas besoin d’exécuter Visual Studio sur un appareil Arm64 pour cibler Arm64. Pour Arm64, vous pouvez installer des outils de génération Arm64 ou des outils de génération ARM64EC ; consultez Arm64 Visual Studio.

Pour le développement .NET, .NET 6 ou version ultérieure est requis pour cibler la plateforme Arm64. Consultez la prise en charge de .NET pour macOS 11 et Windows 11 pour Arm64 et x64.

Pour configurer un projet pour cibler Arm64 et d’autres plateformes

  1. Dans la barre de menus, choisissez Build>Gestionnaire de configurations.

  2. Dans la liste Plateforme de la solution active, choisissez une plateforme pour la solution à cibler, puis choisissez le bouton Fermer.

    1. Si la plateforme voulue ne s’affiche pas dans la liste Plateforme de la solution active, choisissez Nouveau. Une fois les outils installés pour une plateforme particulière, vous pourrez ajouter les nouvelles configurations de solution et de projet qui ciblent cette plateforme.

      La boîte de dialogue Nouvelle plateforme de solution s’affiche.

    2. Dans la liste Taper ou sélectionner la nouvelle plateforme, choisissez la plateforme souhaitée (architecture de processeur) ; par exemple, ARM64.

      Capture d’écran montrant le choix d’une nouvelle plateforme.

      Notes

      Si vous affectez un nouveau nom à votre configuration, vous devrez peut-être modifier les paramètres dans le Concepteur de projet pour cibler la plateforme correcte.

    3. Si vous souhaitez copier les paramètres d’une configuration de plateforme actuelle, choisissez-la, puis choisissez le bouton OK.

Capture d’écran montrant la nouvelle plateforme de solution et la plateforme de projet

Pour configurer un projet pour cibler une autre plateforme

  1. Dans la barre de menus, choisissez Build>Gestionnaire de configurations.

  2. Dans la liste Plateforme de la solution active, choisissez une plateforme pour la solution à cibler, puis choisissez le bouton Fermer.

    1. Si la plateforme voulue ne s’affiche pas dans la liste Plateforme de la solution active, choisissez Nouveau. Après avoir installé les outils d’une plateforme particulière, vous pourrez ajouter la nouvelle solution et les configurations de projet ciblant cette plateforme.

      La boîte de dialogue Nouvelle plateforme de solution s’affiche.

    2. Dans la liste Taper ou sélectionner la nouvelle plateforme, choisissez la plateforme souhaitée (architecture de processeur) ; par exemple, x64.

      Notes

      Si vous affectez un nouveau nom à votre configuration, vous devrez peut-être modifier les paramètres dans le Concepteur de projet pour cibler la plateforme correcte.

    3. Si vous souhaitez copier les paramètres d’une configuration de plateforme actuelle, choisissez-la, puis choisissez le bouton OK.

Notes

Le nom de la plateforme Win32 est utilisé pour les projets C++ et signifie x86. Visual Studio prend en compte à la fois les plateformes au niveau du projet et les plateformes au niveau de la solution, et les plateformes de projet proviennent des systèmes de projet spécifiques au langage. Les projets C++ utilisent Win32 et x64, mais les plateformes de solution utilisent x86 et x64. Lorsque vous choisissez x86 comme configuration de solution, Visual Studio sélectionne la plateforme Win32 pour les projets C++. Pour afficher les paramètres de plateforme au niveau du projet et de plateforme au niveau de la solution, ouvrez le Gestionnaire de configuration et notez les deux paramètres de plateforme. La plateforme au niveau de la solution s’affiche dans la liste déroulante de la plateforme de solution active, et le tableau affiche la plateforme au niveau du projet pour chaque projet. Capture d’écran montrant la plateforme de solutions et la plateforme de projet

Plateformes cibles dans l’interface utilisateur du concepteur de projet ou des propriétés de projet

L’interface utilisateur du concepteur de projet ou des propriétés du projet permet également de cibler différentes plateformes avec votre projet. Si la sélection de l’une des plateformes incluses dans la liste de la boîte de dialogue Nouvelle plateforme de solution ne fonctionne pas pour votre solution, vous pouvez créer un nom de configuration personnalisé et modifier les paramètres dans Propriétés du projet pour cibler la plateforme appropriée.

L’exécution de cette tâche varie suivant le langage de programmation que vous utilisez. Pour plus d’informations, consultez les liens suivants :

Paramètre Prefer 32 bit

Le paramètre Préférer 32 bits dans la page Version du concepteur de projets pour .NET Framework 4.5 ou versions ultérieures gère le cas où vous générez la configuration AnyCPU, mais vous souhaitez que votre application s’exécute en mode 32 bits lorsqu’elle est exécutée sur des plateformes qui prennent en charge les modes 32 bits et 64 bits. Si vous cochez la case, la propriété de build PlatformTarget est définie sur anycpu32bitpreferred. Consultez les commentaires sur PlatformTarget pour C# et /platform pour Visual Basic.

Modification manuelle du fichier projet

Parfois, vous devez modifier manuellement le fichier projet pour une configuration personnalisée. C’est le cas quand vous avez des conditions qui ne peuvent pas être spécifiées dans l’IDE, comme une référence différente pour deux plateformes différentes ou un assembly qui doit être inscrit pour une plateforme particulière afin de l’exposer à COM. L’outil qui traite le Fichier projet est MSBuild.

Attention

La modification manuelle d’un fichier projet C++ que vous utilisez dans Visual Studio n’est pas recommandée.

Inscription de COM

Si vous créez un assembly .NET et que vous l’exposez à COM, Visual Studio inscrit l’assembly avec une architecture de plateforme particulière, car il existe différents emplacements de registre pour chaque architecture de plateforme (par exemple, x86 et x64). Si votre assembly cible déjà une plateforme spécifique, celle-ci est alors utilisée. Mais si vous inscrivez un assembly .NET généré pour Any CPU, MSBuild est défini par défaut afin de l’inscrire pour le runtime actuel de MSBuild. Si vous générez dans Visual Studio, c’est x64 dans Visual Studio 2022 et versions ultérieures, et x86 dans Visual Studio 2019 et versions antérieures. Si vous définissez l’architecture de plateforme en utilisant les méthodes décrites précédemment dans cet article ou si vous spécifiez une autre valeur PlatformTarget dans le Fichier projet, MSBuild respecte cela lors de l’inscription. Il existe une propriété que vous pouvez définir pour remplacer ce comportement, RegisterAssemblyMSBuildArchitecture. Vous pouvez définir RegisterAssemblyMSBuildArchitecture sur l’architecture de plateforme souhaitée (par exemple x86 ou x64) en l’ajoutant à un élément PropertyGroup de niveau supérieur dans le Fichier projet.

Référencement des assemblys et des DLL x86 et x64

Vous pouvez avoir les versions x86 et x64 d’un assembly ou d’une DLL .NET. Pour configurer votre projet de manière à utiliser ces références, ajoutez d’abord la référence, puis ouvrez le fichier projet et modifiez-le pour ajouter un ItemGroup avec une condition qui fait référence à la fois à la configuration et à la plateforme cible. Par exemple, supposons que le binaire que vous référencez est ClassLibrary1 et qu’il existe des chemins différents pour les configurations Debug et Release, ainsi que des versions x86 et x64. Ensuite, utilisez quatre éléments ItemGroup avec toutes les combinaisons de paramètres, comme suit :

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <Platforms>AnyCPU;x64;x86</Platforms>
  </PropertyGroup>

  <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64'">
    <Reference Include="ClassLibrary1">
      <HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\x64\Debug\netstandard2.0\ClassLibrary1.dll</HintPath>
    </Reference>
  </ItemGroup>

  <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64'">
    <Reference Include="ClassLibrary1">
      <HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\x64\Release\netstandard2.0\ClassLibrary1.dll</HintPath>
    </Reference>
  </ItemGroup>

  <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86'">
    <Reference Include="ClassLibrary1">
      <HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\x86\Debug\netstandard2.0\ClassLibrary1.dll</HintPath>
    </Reference>
  </ItemGroup>
  
  <ItemGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86'">
    <Reference Include="ClassLibrary1">
      <HintPath>..\..\ClassLibrary1\ClassLibrary1\bin\x86\Release\netstandard2.0\ClassLibrary1.dll</HintPath>
    </Reference>
  </ItemGroup>
</Project>

Pour plus d’informations sur le fichier projet, consultez Informations de référence sur le schéma de fichier de projet MSBuild.