> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Structure des répertoires d'en-têtes et de bibliothèques du GDKX

> Décrit la nouvelle disposition des répertoires pour les en-têtes et les bibliothèques du GDKX.

> [!NOTE]
>
> La structure de répertoires décrite dans cet article est la **disposition simplifiée (multiplateforme)** introduite avec le GDK d'octobre 2025.
>
> À partir du GDK d'octobre 2026, la disposition simplifiée est installée par défaut. L'ancienne disposition demeure disponible comme option de compatibilité facultative et dépréciée pour les équipes qui ont besoin de plus de temps pour effectuer la migration.
>
> L'ancienne disposition ne sera plus prise en charge et sera retirée du programme d'installation à partir de la version d'avril 2027 du GDK.

Dans les versions actuelles du Microsoft Game Development Kit (GDK), la disposition était optimisée autour du partage de code et axée sur des plateformes précises. L'intégration de la génération pour cette disposition reposait largement sur le fait de masquer la complexité dans les plateformes MSBuild personnalisées. Pour la nouvelle disposition, l'accent est mis sur la simplification de l'intégration, la prise en charge d'une liste croissante de plateformes cibles et l'amélioration de la prise en charge des plateformes MSBuild standard et des systèmes de génération autres que ceux de Microsoft.

## Ancienne disposition des en-têtes et des bibliothèques

La disposition actuelle des fichiers du GDK Microsoft se résume comme suit.

```text theme={null}
251000\
    GRDK\
        ExtensionLibraries\
            Xbox.Services.API.C\
                ExtensionLibrary.props
                DesignTime\CommonConfiguration\Neutral\
                    Include\
                    Lib\
                    Redist\
            ...
        GameKit\
            Include\
            Lib\
                amd64\
```

```text theme={null}
    GXDK\
        gameKit\
            Include\
                XboxOne\
                Scarlett\
            Lib\
                amd64\
                    XboxOne\
                    Scarlett\
        ToolKit\
            Include\
                    XboxOne\
                    Scarlett\
            Lib\
                amd64\
                    XboxOne\
                    Scarlett\
```

Les plateformes MSBuild personnalisées **Gaming.Desktop.x64**, **Gaming.Xbox.Scarlett.x64** et **Gaming.Xbox.XboxOne.x64** implémentent toute la logique de construction des chemins include/lib qui combinent tout ce contenu de diverses façons. Si vous utilisiez CMake ou une solution make personnalisée, cette logique devait également y être implémentée. Pour un exemple détaillé, consultez la version d'avril 2025 de [CMakeExample](https://github.com/microsoft/Xbox-GDK-Samples/tree/apr2025/Samples/Tools/CMakeExample).

Les versions d'octobre 2025 et d'avril 2026 du GDK comprennent à la fois la disposition simplifiée et l'ancienne disposition. À partir du GDK d'octobre 2026, le programme d'installation installe uniquement la disposition simplifiée par défaut. L'ancienne disposition peut toujours être sélectionnée comme installation facultative, mais elle est dépréciée et n'est plus la voie de développement recommandée.

L'ancienne disposition ne sera plus prise en charge et sera retirée du programme d'installation à partir de la version d'avril 2027 du GDK.

## Nouvelle disposition des en-têtes et des bibliothèques

La version d'octobre 2025 du GDK offre désormais une disposition de remplacement pour les en-têtes et les bibliothèques, qui facilite grandement l'intégration des plateformes et permet d'accueillir d'autres plateformes au fil du temps.

```text theme={null}
251000\
    windows\
        bin\
            arm64
            x64\
        include\
        lib\
            arm64
            x64\
        redist

    xbox\
        bin\
           gen8\
           gen9\
           devpctools\
              gen8\
              gen9\
              x64\
           x64\
        build\
        include\
        lib\
        redist\
        source\

```

## Utilisation de la nouvelle disposition avec les plateformes MSBuild personnalisées

Les plateformes MSBuild **Gaming.\*.x64** existantes utilisent l'ancienne disposition par défaut, mais vous pouvez choisir d'utiliser la nouvelle disposition en définissant la propriété **GDKCrossPlatform**.

```xml theme={null}
<PropertyGroup Label="Globals">
...
  <GDKCrossPlatform>true</GDKCrossPlatform>
</PropertyGroup>
```

Cela a pour effet d'ajouter au projet les chemins include/lib appropriés plutôt que les divers chemins complexes utilisés par l'ancienne disposition.

Dans cette nouvelle intégration simplifiée, le mécanisme des bibliothèques d'extension n'est plus utilisé. Tout le contenu est disponible par défaut au moment de la génération dans les chemins include/lib.

Le projet doit ensuite effectuer l'édition de liens avec les bibliothèques supplémentaires qu'il utilise. Les projets créés à partir des anciens modèles de projet du GDK devraient contenir des instructions comme les suivantes.

```xml theme={null}
<AdditionalDependencies>uuid.lib;$(Console_Libs);%(XboxExtensionsDependencies);%(AdditionalDependencies)</AdditionalDependencies>
```

Pour la nouvelle disposition, la propriété **Console\_Libs** liste les bibliothèques de base requises.

| Plateforme | Bibliothèques de base |
| - | - |
| Gaming.\*.x64 | xgameruntime.lib d3d12.lib dxguid.lib dxgi.lib gameinput.lib |
| Gaming.Xbox.Scarlett.x64 | xgameruntime.lib xgameplatform.lib d3d12\_xs.lib xg\_xs.lib pixevt.lib xmem.lib |
| Gaming.Xbox.XboxOne.x64 | xgameruntime.lib xgameplatform.lib d3d12\_x.lib xg\_x.lib pixevt.lib xmem.lib |

Le projet doit ajouter à **AdditionalDependencies** les bibliothèques d'extension qu'il utilise, car chacune d'elles doit être activée explicitement.

| Plateforme | Bibliothèques de base |
| - | - |
| Xbox.LibHttpClient | libHttpClient.lib |
| Xbox.XCurl.API | XCurl.lib |
| Xbox.Game.Chat.2.Cpp.API | GameChat2.lib |
| Xbox.Services.API.C (Debug) | Appnotify.lib winhttp.lib crypt32.lib Microsoft.Xbox.Services.142.C.Debug.lib |
| Xbox.Services.API.C (Release) | Appnotify.lib winhttp.lib crypt32.lib Microsoft.Xbox.Services.142.C.lib |
| PlayFab.Party.Cpp | Party.lib |
| PlayFab.PartyXboxLive.Cpp | PartyXboxLive.lib |
| PlayFab.Services.C | PlayFabCore.lib PlayFabGameSave.lib PlayFabServices.lib |
| PlayFab.Multiplayer.Cpp | PlayFabMultiplayer.lib |

Le projet doit également copier dans la disposition les DLL supplémentaires qu'il utilise. Pour ce faire, vous pouvez utiliser des étapes de génération personnalisée, typiques de nombreuses intégrations de bibliothèques DLL, ou modifier le fichier vcxproj ou ajouter un fichier props pour utiliser la liste de groupes d'éléments **ReferenceCopyLocalPaths**. Le code MSBuild ci-dessous liste toutes les DLL possibles, mais chaque projet n'aura besoin que de certaines d'entre elles.

```xml theme={null}
  <PropertyGroup>
    <GDKCrossPlatformPath Condition="'$(GDKCrossPlatformPath)'==''">$(GameDKCoreLatest)</GDKCrossPlatformPath>
    <GDKCrossPlatformPath Condition="'$(GDKCrossPlatformPath)'==''">$(GameDKXboxLatest)</GDKCrossPlatformPath>
  </PropertyGroup>

  <ItemGroup Condition="'$(Platform)'=='Gaming.Desktop.x64'">
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\libHttpClient.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\XCurl.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\GameChat2.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\Party.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\PartyXboxLive.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\PlayFabCore.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\PlayFabGameSave.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\PlayFabMultiplayer.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\PlayFabServices.dll" />
  </ItemGroup>

  <ItemGroup Condition="'$(Platform)'=='Gaming.Xbox.Scarlett.x64'">
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\libHttpClient.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\XCurl.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\GameChat2.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\Party.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PartyXboxLive.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PlayFabCore.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PlayFabGameSave.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PlayFabMultiplayer.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PlayFabServices.dll" />
  </ItemGroup>

  <ItemGroup Condition="'$(Platform)'=='Gaming.Xbox.XboxOne.x64'">
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\libHttpClient.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\XCurl.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\GameChat2.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\Party.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PartyXboxLive.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PlayFabCore.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PlayFabGameSave.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PlayFabMultiplayer.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PlayFabServices.dll" />
  </ItemGroup>
```

> [!NOTE]
>
> `GameDKLatest` est défini uniquement par le GDK Microsoft avec XBOX Extensions. Par conséquent, nous avons introduit de nouvelles variables d'environnement qui prennent entièrement en charge l'installation côte à côte des deux versions du GDK Microsoft : `GameDKCoreLatest` est défini par le GDK Microsoft. `GameDKXboxLatest` est défini par le GDK Microsoft avec XBOX Extensions.

### Utilisation d'un fichier Directory.Build.props

Pour valider rapidement des projets GDK Gaming.\*.x64 existants à l'aide de la nouvelle disposition, placez le contenu suivant dans un fichier nommé Directory.Build.props dans votre arborescence source. Cela active la nouvelle disposition et inclut la plupart ou la totalité des bibliothèques d'extension, même si le projet ne les utilise pas.

> [!NOTE]
>
> La propriété **GDKExtLibNames** n'est pas utilisée par les règles MSBuild lors d'une génération avec **GDKCrossPlatform** défini à true. Comme elle est déjà présente pour la génération avec les anciennes règles MSBuild, elle est utilisée dans ce fichier props pour activer certaines DLL supplémentaires dans la disposition.

```xml theme={null}
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>
    <GDKCrossPlatform>true</GDKCrossPlatform>
    <GDKCrossPlatformPath Condition="'$(GDKCrossPlatformPath)'==''">$(GameDKCoreLatest)</GDKCrossPlatformPath>
    <GDKCrossPlatformPath Condition="'$(GDKCrossPlatformPath)'==''">$(GameDKXboxLatest)</GDKCrossPlatformPath>
    <AllExtensionLibs>Appnotify.lib;winhttp.lib;crypt32.lib;libHttpClient.lib;XCurl.lib;GameChat2.lib;PlayFabCore.lib;PlayFabServices.lib;PlayFabMultiplayer.lib;Party.lib;PartyXboxLive.lib;PlayFabGameSave.lib</AllExtensionLibs>
    <AllExtensionLibs Condition="'$(Configuration)'=='Debug'">Microsoft.Xbox.Services.142.C.Debug.lib;$(AllExtensionLibs)</AllExtensionLibs>
    <AllExtensionLibs Condition="'$(Configuration)'!='Debug'">Microsoft.Xbox.Services.142.C.lib;$(AllExtensionLibs)</AllExtensionLibs>
  </PropertyGroup>

  <ItemDefinitionGroup Condition="'$(Platform)'=='Gaming.Desktop.x64'">
    <Link>
      <AdditionalDependencies>$(AllExtensionLibs);%(AdditionalDependencies)</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>

  <!--
    We use XboxExtensionsDependencies because of a hack in our Gaming.Xbox.*.x64 platforms which forces
    AdditionalDependencies to xgameplatform.lib, but means we can't use AdditionalDependencies this early.
  -->

  <ItemDefinitionGroup Condition="'$(Platform)'=='Gaming.Xbox.Scarlett.x64' OR '$(Platform)'=='Gaming.Xbox.XboxOne.x64'">
    <Link>
      <XboxExtensionsDependencies>$(AllExtensionLibs);%(XboxExtensionsDependencies)</XboxExtensionsDependencies>
    </Link>
  </ItemDefinitionGroup>

  <!--
    Makes sure we deploy all the libs we need. We use the 'old layout' GDKExtLibNames property as a way to test
    what is requested to try to reduce the over-inclusion of unused DLLs.
  -->

  <ItemGroup Condition="'$(Platform)'=='Gaming.Desktop.x64'">
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\libHttpClient.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\XCurl.dll" />
  </ItemGroup>

  <ItemGroup Condition="'$(Platform)'=='Gaming.Desktop.x64' AND $(GDKExtLibNames.Contains('Xbox.Game.Chat.2.Cpp.API'))">
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\GameChat2.dll" />
  </ItemGroup>

  <ItemGroup Condition="'$(Platform)'=='Gaming.Desktop.x64' AND $(GDKExtLibNames.Contains('PlayFab'))">
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\Party.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\PartyXboxLive.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\PlayFabCore.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\PlayFabGameSave.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\PlayFabMultiplayer.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)windows\bin\x64\PlayFabServices.dll" />
  </ItemGroup>

  <ItemGroup Condition="'$(Platform)'=='Gaming.Xbox.Scarlett.x64' OR '$(Platform)'=='Gaming.Xbox.XboxOne.x64'">
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\libHttpClient.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\XCurl.dll" />
  </ItemGroup>

  <ItemGroup Condition="('$(Platform)'=='Gaming.Xbox.Scarlett.x64' OR '$(Platform)'=='Gaming.Xbox.XboxOne.x64') AND $(GDKExtLibNames.Contains('Xbox.Game.Chat.2.Cpp.API'))">
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\GameChat2.dll" />
  </ItemGroup>

  <ItemGroup Condition="('$(Platform)'=='Gaming.Xbox.Scarlett.x64' OR '$(Platform)'=='Gaming.Xbox.XboxOne.x64') AND $(GDKExtLibNames.Contains('PlayFab'))">
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\Party.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PartyXboxLive.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PlayFabCore.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PlayFabGameSave.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PlayFabMultiplayer.dll" />
    <ReferenceCopyLocalPaths Include="$(GDKCrossPlatformPath)xbox\bin\x64\PlayFabServices.dll" />
  </ItemGroup>

</Project>
```

## Utilisation de la nouvelle disposition avec la plateforme MSBuild x64

Au lieu d'utiliser la plateforme **Gaming.Desktop.x64**, vous pouvez utiliser la plateforme **x64** standard pour générer pour PC. Dans l'ancienne disposition, il fallait ajouter des instructions `<Import Project="...\ExtensionLibrary.props">` pour les bibliothèques d'extension, comme le détaille la rubrique [Utilisation de la plateforme x64 avec le Microsoft Game Development Kit (GDK)](https://docs.xbox.com/fr-CA/tools/tools-pc/visualstudio/gr-vs-templates.md#using-the-x64-platform-with-the-microsoft-game-development-kit-gdk).

Dans la nouvelle disposition, les instructions d'intégration sont simplifiées.

```xml theme={null}
  <PropertyGroup>
    <GDKCrossPlatformPath Condition="'$(GDKCrossPlatformPath)'==''">$(GameDKCoreLatest)</GDKCrossPlatformPath>
    <GDKCrossPlatformPath Condition="'$(GDKCrossPlatformPath)'==''">$(GameDKXboxLatest)</GDKCrossPlatformPath>
  </PropertyGroup>
```

```xml theme={null}
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  <ExecutablePath>$(GameDK)bin;$(GDKCrossPlatformPath)windows\bin\x64;$(ExecutablePath)</ExecutablePath>
  <IncludePath>$(GDKCrossPlatformPath)windows\Include;$(IncludePath);</IncludePath>
  <LibraryPath>$(GDKCrossPlatformPath)windows\lib\x64;$(LibraryPath)</LibraryPath>
</PropertyGroup>
```

```xml theme={null}
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  <ExecutablePath>$(GameDK)bin;$(GDKCrossPlatformPath)windows\bin\x64;$(ExecutablePath)</ExecutablePath>
  <IncludePath>$(GDKCrossPlatformPath)windows\Include;$(IncludePath);</IncludePath>
  <LibraryPath>$(GDKCrossPlatformPath)windows\lib\x64;$(LibraryPath)</LibraryPath>
</PropertyGroup>
```

Ajoutez toutes les bibliothèques d'extension requises à **AdditionalDependencies**, en plus de la liste d'origine.

```xml theme={null}
<AdditionalDependencies>xgameruntime.lib;gameinput.lib;d3d12.lib;dxgi.lib;dxguid.lib;uuid.lib;kernel32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
```

Les DLL des bibliothèques d'extension activées doivent être copiées dans le répertoire binaire comme ci-dessus, à l'aide d'une action de génération personnalisée ou du groupe d'éléments **ReferenceCopyLocalPaths** pour la disposition finale.

Les autres instructions concernant **PreprocessorDefinitions** et la gestion du fichier .mgc avec les ressources d'image restent inchangées.

## Utilisation de la nouvelle disposition avec CMake

Lorsque vous utilisez les générateurs Microsoft Visual Studio avec CMake et les plateformes MSBuild personnalisées **Gaming.\*.x64**, la nouvelle disposition est activée avec ce qui suit.

```text theme={null}
set_property(TARGET ${PROJECT_NAME} PROPERTY VS_GLOBAL_GDKCrossPlatform "true")
```

Dans [CMakeGDKExample](https://github.com/microsoft/Xbox-GDK-Samples/tree/apr2025/Samples/Tools/CMakeGDKExample), supprimez l'utilisation de `VS_GLOBAL_GDKExtLibNames` et remplacez-la par ce qui suit (en supposant CMake 3.21 ou une version ultérieure) pour copier dans la disposition les DLL d'extension utilisées.

```text theme={null}
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E $<IF:$<BOOL:$<TARGET_RUNTIME_DLLS:${PROJECT_NAME}>>,copy,true>
    $<TARGET_RUNTIME_DLLS:${PROJECT_NAME}> $<TARGET_FILE_DIR:${PROJECT_NAME}>
    COMMAND_EXPAND_LISTS
    )
```

## Utilisation de la nouvelle disposition avec des systèmes de génération personnalisés

La génération pour Windows x64 à l'aide du GDK nécessite ce qui suit.

```cmd theme={null}
set INCLUDE=%GameDKXboxLatest%windows\include;%INCLUDE%
set LIB=%GameDKXboxLatest%windows\lib\x64;%LIB%
set PATH=%GameDK%bin;%GameDKXboxLatest%windows\bin\x64;%PATH%
```

La génération pour XBOX Series X|S (aussi appelée *Gaming.Xbox.Scarlett.x64*) nécessite :

```cmd theme={null}
set INCLUDE=%GameDKXboxLatest%xbox\include\gen9;%GameDKXboxLatest%xbox\include;%INCLUDE%
set LIB=%GameDKXboxLatest%xbox\lib\gen9;%GameDKXboxLatest%xbox\lib\x64;%LIB%
set PATH=%GameDK%bin;%GameDKXboxLatest%xbox\bin\gen9;%GameDKXboxLatest%xbox\bin\x64;%PATH%
```

La génération pour XBOX One (aussi appelée *Gaming.Xbox.XboxOne.x64*) nécessite :

```cmd theme={null}
set INCLUDE=%GameDKXboxLatest%xbox\include\gen8;%GameDKXboxLatest%xbox\include;%INCLUDE%
set LIB=%GameDKXboxLatest%xbox\lib\gen8;%GameDKXboxLatest%xbox\lib\x64;%LIB%
set PATH=%GameDK%bin;%GameDKXboxLatest%xbox\bin\gen8;%GameDKXboxLatest%xbox\bin\x64;%PATH%
```

## Utilisation de la nouvelle disposition pour les outils de contenu PC

Pour le développement sur console, certains types de préparation (« cooking ») de contenu ont lieu sur le PC de développement à l'aide des API XTF, de la bibliothèque d'encodage XMA2 ou d'outils Direct3D 12.X personnalisés. L'accès à ce contenu nécessite une configuration de génération particulière :

La génération d'outils PC qui ciblent à la fois XBOX One et XBOX Series X|S nécessite :

```cmd theme={null}
set INCLUDE=%GameDKXboxLatest%xbox\include\devpctools;%GameDK%\toolKit\include;%INCLUDE%
set LIB=%GameDKXboxLatest%xbox\lib\devpctools\x64;%GameDK%\toolKit\lib\amd64;%LIB%
set PATH=%GameDK%bin;%PATH%
```

La génération d'outils PC qui ciblent les graphismes XBOX Series X|S nécessite :

```cmd theme={null}
set INCLUDE=%GameDKXboxLatest%xbox\include\devpctools\gen9;%GameDKXboxLatest%xbox\include\devpctools;%GameDK%\toolKit\include;%INCLUDE%
set LIB=%GameDKXboxLatest%xbox\lib\devpctools\gen9;%GameDKXboxLatest%xbox\lib\devpctools\x64;%GameDK%\toolKit\lib\amd64;%LIB%
set PATH=%GameDKXboxLatest%xbox\devpctools\bin\gen9;%GameDK%bin;%PATH%
```

La génération d'outils PC qui ciblent les graphismes XBOX One nécessite :

```cmd theme={null}
set INCLUDE=%GameDKXboxLatest%xbox\include\devpctools\gen8;%GameDKXboxLatest%xbox\include\devpctools;%GameDK%\toolKit\include;%INCLUDE%
set LIB=%GameDKXboxLatest%xbox\lib\devpctools\gen8;%GameDKXboxLatest%xbox\lib\devpctools\x64;%GameDK%\toolKit\lib\amd64;%LIB%
set PATH=%GameDKXboxLatest%xbox\devpctools\bin\gen8;%GameDK%bin;%PATH%
```

## Lecture de l'édition de génération à partir d'un fichier installé

La nouvelle disposition ne contient pas les fichiers `grdk.ini` ou `gxdk.ini`. Pour trouver les informations sur l'édition en analysant un fichier, utilisez `grdk.h` ou `gxdk.h`.

Voici un exemple PowerShell qui fonctionne également avec les versions antérieures du GDK.

```powershell theme={null}
$result = Get-ChildItem -Path $env:GameDKXboxLatest -Filter "gxdk.h" -Recurse
if ($result.Count -eq 0)
{
    $result = Get-ChildItem -Path $env:GXDKLatest -Filter "gxdk.h" -Recurse
}
if ($result.Count -eq 0)
{
    Write-Error "##[error]Failed to find gxdk.h in either GameDKXboxLatest or GXDKLatest" -ErrorAction Stop
}

$content = Get-Content -Path $result[0].FullName

if (-not ([string]$content -match '#define\s+_GXDK_EDITION\s+([0-9][0-9][0-9][0-9][0-9][0-9])')) {
    Write-Error "##[error]Failed to find edition define" -ErrorAction Stop
}

$xbld_edition = $Matches[1]

if (-not ([string]$content -match '#define\s+_GXDKVER_PRODUCTBUILDVER_FULL\s+([0-9]+\.[0-9]+\.([0-9]+)\.[0-9]+)')) {
    Write-Error "##[error]Failed to find full version define" -ErrorAction Stop
}

$xbld_full_productbuild = $Matches[1]
$xbld_build = $Matches[2]

if (-not ([string]$content -match '#define\s+_GXDK_MM_NUM\s+([0-9]{1,2})')) {
    Write-Error "##[error]Failed to find month define" -ErrorAction Stop
}

$month = $Matches[1]

if (-not ([string]$content -match '#define\s+_GXDK_FULLYY\s+([0-9]{4})')) {
    Write-Error "##[error]Failed to find full year define" -ErrorAction Stop
}

$year = $Matches[1]

Write-Output ("_xbld_name={0} {1} GXDK" -f (Get-Culture).DateTimeFormat.GetMonthName([int]$month), $year)
Write-Output ("_xbld_edition={0}" -f $xbld_edition)
Write-Output ("_xbld_full_productbuild={0}" -f $xbld_full_productbuild)
Write-Output ("_xbld_build={0}" -f $xbld_build)
```

## Génération sans installation (BWOI)

Les fichiers de plateforme de génération MSBuild personnalisée qui se trouvaient à l'origine sous `<edition>\flatDeployment` dans l'ancienne disposition se trouvent maintenant sous `<edition>\xbox\build`, avec des chemins raccourcis.

Par exemple, pour configurer un dossier de règles MSBuild BWOI pour VS 2022, utilisez ces commandes.

```cmd theme={null}
rd /q /s c:\temp\msbuildgdk
md c:\temp\msbuildgdk
xcopy "%VSInstallDir%\MSBuild\Microsoft\VC" /s c:\temp\msbuildgdk
xcopy "%GameDKXboxLatest%\xbox\build\VS2022\gen8" c:\temp\msbuildgdk /s
xcopy "%GameDKXboxLatest%\xbox\build\VS2022\gen9" c:\temp\msbuildgdk /s
xcopy "%GameDKXboxLatest%\xbox\build\VS2022\pc" c:\temp\msbuildgdk /s
```

Ensuite, dans le fichier Directory.Build.props utilisé pour la génération sans installation (BWOI), définissez les propriétés pour qu'elles pointent vers ce dossier combiné.

```xml theme={null}
<PropertyGroup Condition="'$([System.Text.RegularExpressions.Regex]::IsMatch('$(Platform)', 'Gaming\..+\.x64'))">
   <VCTargetsPath17>c:\temp\msbuildgdk\v170\</VCTargetsPath17>
   <VCTargetsPath16>c:\temp\msbuildgdk\v160\</VCTargetsPath16>
</PropertyGroup>
```


## Related topics

- [Structure des répertoires d'en-têtes et de bibliothèques du GDK](https://docs.xbox.com/fr-CA/build/gdk-and-engines/guides/gdk-directory-structure.md)
- [Prise en main sur Android](https://docs.xbox.com/fr-CA/services/playfab/multiplayer/networking/android-specific-requirements.md)
- [Prise en main sur Linux](https://docs.xbox.com/fr-CA/services/playfab/multiplayer/networking/linux-specific-requirements.md)
- [Prise en main sur iOS et macOS](https://docs.xbox.com/fr-CA/services/playfab/multiplayer/networking/apple-specific-requirements.md)
- [Vue d'ensemble de XSAPI C](https://docs.xbox.com/fr-CA/services/xbox-services/fundamentals/xbox-services-api/live-xsapi-flat-c.md)
