Unity and Microsoft announce the Microsoft GDK Packages for Unity for Unity 2021 and 2022 LTS (946629)

can anyone help me understand why I get this error:

Library\PackageCache\com.unity.microsoft.gdk.tools.xbox@c8cc554d885a\Editor\XboxPlatformBuilder.cs(16,42): error CS0535: ‘XboxPlatformBuilder’ does not implement interface member ‘GdkPlatform.IBuilder.GetLocalizationOutputPath(BuildReport)’

I installed API and tools from Package Manager and then installed the new com.unity.microsoft.gdk.tools.xbox-1.0.0.tarball, and now I have this error.

GDK 2024.10-GDKXUpdate1–10.0.26100.1897 is installed

@LightfootBrosGames Please post your Xbox related questions in the appropriate section for NDA purposes.

We’ve migrated from older Windows GDK Unity package on 2022.3 LTS to this new unified version and latest Unity 6.3 LTS. Things are now overall working, but, with latest packages from Package Manager, subval fails with the following (before we did this migration, everything was fine):

<failure Id="ILI_NonRetailDependencyFound">Non-retail dependency in file \\?\D:\Jenkins\workspace\MyGame_GDK_Release\BUILD\MyGame_Demo_Data\Plugins\x86_64\Microsoft.Xbox.Services.GDK.C.Thunks.dll: MSVCP140D.dll.</failure>
  <failure Id="ILI_NonRetailDependencyFound">Non-retail dependency in file \\?\D:\Jenkins\workspace\MyGame_GDK_Release\BUILD\MyGame_Demo_Data\Plugins\x86_64\Microsoft.Xbox.Services.GDK.C.Thunks.dll: VCRUNTIME140D.dll.</failure>
  <failure Id="ILI_NonRetailDependencyFound">Non-retail dependency in file \\?\D:\Jenkins\workspace\MyGame_GDK_Release\BUILD\MyGame_Demo_Data\Plugins\x86_64\Microsoft.Xbox.Services.GDK.C.Thunks.dll: VCRUNTIME140_1D.dll.</failure>
  <failure Id="ILI_NonRetailDependencyFound">Non-retail dependency in file \\?\D:\Jenkins\workspace\MyGame_GDK_Release\BUILD\MyGame_Demo_Data\Plugins\x86_64\Microsoft.Xbox.Services.GDK.C.Thunks.dll: ucrtbased.dll.</failure>

GDK version is 251000, as required by Xbox/Series versions. Or is is that WinGDK needs the build machine to also have a different/more recent SDK version installed?

I’ve got these files in Plugins/GDK, which seem to automatically be added when installing GDK Packages via PM:

I’ve seen a few threads here and on Microsoft Game Core for Xbox forum too (this this issue for me is ONLY for Windows GDK, consoles are fine), and I’ve tried cleaning Library/Temp/Obj folder, tried from different PCs, and the result is the same.

Somehow it uses debug versions for DLLs? I’m in Master C++ configuration, non-dev builds, building a non-sideloadable package, and signing with Stable Key. We build with the CleanBuildCache player option. I see in the symbols file, indeed some debug versions of PDBs? Is that normal? :


I believe a version without .Debug should be present here for the PDB. All others use correctly the master version:


(and same for executable)

Packages installed:


For other platforms, I’ve got both VS 2022 and 2019 installed, both with Win10 SDK + Game Dev with C++ :

I do not understand this… Could it be that I’d need to uninstall VS 2019?

Unrelated to this (but could be?), but I’ve noticed that on the contrary to Xbox/Series:

  • Since the upgrade from GDK for PC to this new version, symbols for WinGDK are not properly present (only GameAssembly.pdb is present), unless “Copy PDB Files” is true - in which case, since they are copied into the root of the build output, they are included in the final package, which causes Subval issues for suspect files. I’ve been forced to add a post build process (before makpgk) to fully delete them, and they still are then present in final auto-generated .zip symbol files, but no longer included in the package
  • To me this is not normal, shouldn’t require me to do that - I imagine there are some issues with these recent versions of Windows GDK packages - or specific to our environment somehow? This isn’t required for Xbox/XSX, and was needed prior to migration to unified packages

Thanks for your help!
Charles

Alright I confirm Unity is likely taking the wrong Thunks.dll file:

  • The dll distributed by Unity is exact same size of 4697 KB as the Microsoft.Xbox.Services.C.Thunks.Debug.dll (non debug is half the size)
  • If I take it from Microsoft GDC, and replace it in the Unity project and build: I will run a build tomorrow and let you know the results, I’m expecting it to succeed (but will have to do it as post process build, before package, because it gets auto-rewritten on build to the DEBUG version)
  • Then, if I delete /Plugins/GDK, or restart Unity, it gets auto-recreated by Unity and it replaces again with the DEBUG version of Thunks DLL

If this is a me-problem please let me know if you have ideas how I can fix it properly.

Thanks!

Hi,

Thank you for reporting this. Looking through the package code I think I have spotted the problem. We will aim to have this fixed in the next release!

In the meantime some additional information to help get you unblocked.

The .DLLs in the Assets/Plugins/GDK path are only used when targeting the Windows platform and are pulled straight from your installed GDK (Visual Studio is not involved in this step).

The GDK API package will automatically import the .DLLs from the latest version of the GDK available if the Assets/Plugins/GDK/GdkEdition.json tracking file is not present. If the file is present it will try to ensure the correct .DLLs are in place for the edition specified in the tracking file (updating any which may be stale/incorrect).

However, you can disable this behaviour from Project Settings > Microsoft GDK settings, then under the Windows platform tab setting ‘Microsoft GDK Version’ to ‘Not Tracked’.

This should allow you to manually import the correct .DLLs for the build and get you unblocked.

Hope this helps,

  • Shaun
1 Like

Awesome, thank for the quick check, reply/explanation and fix!

Indeed, I have a tracked version setup! Oh, I have applied a hardcore fix that worked whereby in GDK folder I replaced the Debug DLL with actually the Release DLL and renamed it as “Debug” so the “Release disguised as Debug DLL is taken” and Subval is green! I’ll likely revert this and set to Not Tracked and force-replace the DLL in the Plugins folder, until a future update fixes this.

Thanks Shaun! Have a nice day! :slight_smile: