Search code examples
uwpmanifestwindows-mixed-reality

How do I resolve a namespace error in package.appxmanifest when creating a Mixed Reality 3D Icon?


I'm trying to add a MixedReality 3D Icon for the cliff house in a Unity 3D UWP project.

So I followed the offical documentation (https://learn.microsoft.com/en-us/windows/mixed-reality/implementing-3d-app-launchers) and my package.appxmanifest now has these lines:

<Package xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:uap2="http://schemas.microsoft.com/appx/manifest/uap/windows10/2" xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:uap4="http://schemas.microsoft.com/appx/manifest/uap/windows10/4" xmlns:uap5="https://schemas.microsoft.com/appx/manifest/uap/windows10/5" xmlns:iot="http://schemas.microsoft.com/appx/manifest/iot/windows10" xmlns:mobile="http://schemas.microsoft.com/appx/manifest/mobile/windows10" IgnorableNamespaces="uap uap2 uap3 uap4 uap5 mp mobile iot" xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

and

<uap:DefaultTile ShortName="Kaldor - Your Public Art Project 2019" Wide310x150Logo="Assets\Wide310x150Logo.png" Square71x71Logo="Assets\Square71x71Logo.png" Square310x310Logo="Assets\Square310x310Logo.png">
  <uap:ShowNameOnTiles>
    <uap:ShowOn Tile="square310x310Logo" />
    <uap:ShowOn Tile="wide310x150Logo" />
  </uap:ShowNameOnTiles>
  <uap5:MixedRealityModel Path="Assets\StoreModel1.glb" />
</uap:DefaultTile>

But I get this console error:

The element 'DefaultTile' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10' has invalid child element 'MixedRealityModel' in namespace 'https://schemas.microsoft.com/appx/manifest/uap/windows10/5'. List of possible elements expected: 'TileUpdate' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10' as well as 'MixedRealityModel' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10/5' as well as 'HoloContentChoice' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10'.

I have followed the documentation and the official MS video on the subject and cannot see what I have missed?


Solution

  • You have inconsistent schema URLs in your Package tag. You use http for every URL except https://schemas.microsoft.com/appx/manifest/uap/windows10/5 where you use https.

    Since uap10/5 is a child of uap10, and since you use http://schemas.microsoft.com/appx/manifest/uap/windows10, it expects http://schemas.microsoft.com/appx/manifest/uap/windows10/5, not https://schemas.microsoft.com/appx/manifest/uap/windows10/5 for child elements. (Note the very subtle difference in the URLs.)

    This is exactly the error you get:

    The element 'DefaultTile' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10' has invalid child element 'MixedRealityModel' in namespace 'https://schemas.microsoft.com/appx/manifest/uap/windows10/5'.

    And it tells you that it expects http:

    List of possible elements expected: [...] as well as 'MixedRealityModel' in namespace 'http://schemas.microsoft.com/appx/manifest/uap/windows10/5'

    However instead of switching 10/5 to http, you should switch everything else to https.