Archived

This forum has been archived. Please start a new discussion on GitHub.

Windows Store-App validation failed

Hi everyone,

I'm developing a Windows Store-App for a remote camera control and view finder on VS Express 2012 using Ice 3.5.1.

Everything works fine until it comes to the certification process for the app. My App failes the Windows-Runtime MetaData validation test because types in the namespace "IceInternal" are part of my winmd file that doesn't match the namespace.

Solution should be to make sure that the meta data for all Windows-Runtime-Types are part of the windmd file which has the longest name matching the namespace of the appx packet.

So what exactly does that mean and how can I achieve that?

Any help is welcome!

Thanks
Markus

Comments

  • benoit
    benoit Rennes, France
    Hi Markus,

    It's not clear to me why you're getting this error. We don't define any WinRT types in the IceInternal namespace so nothing with the IceInternal namespace should end up in the WINMD file.

    I don't get this problem if I try to validate the Hello demo from the Ice demo distribution. Could you perhaps try to reproduce the issue with a small project?

    Cheers,
    Benoit.
  • Hi Benoit,
    thanks for your quick reaction.

    I disassembled the winmd file and the only Ice related entry ther is:

    .class public auto ansi windowsruntime sealed IceInternal.SocketOperationCompletedHandler
    extends [mscorlib]System.MulticastDelegate
    {
    .custom instance void [Windows]Windows.Foundation.Metadata.VersionAttribute::.ctor(uint32) = ( 01 00 01 00 00 00 00 00 )
    .custom instance void [Windows]Windows.Foundation.Metadata.GuidAttribute::.ctor(uint32,
    uint16,
    uint16,
    uint8,
    uint8,
    uint8,
    uint8,
    uint8,
    uint8,
    uint8,
    uint8) = ( 01 00 07 66 67 35 CF 17 E1 3E BB 6E AD 30 60 7D // ...fg5...>.n.0`}
    2C 7E 00 00 ) // ,~..
    .method private hidebysig specialname rtspecialname
    instance void .ctor([in] object __param0,
    [in] native int __param1) runtime managed
    {
    } // end of method SocketOperationCompletedHandler::.ctor

    .method public hidebysig newslot specialname virtual
    instance void Invoke([in] int32 __param0) runtime managed
    {
    } // end of method SocketOperationCompletedHandler::Invoke

    } // end of class IceInternal.SocketOperationCompletedHandler

    Though I will still try to reproduce the issue.

    Regards
    Markus
  • benoit
    benoit Rennes, France
    Thanks, this is indeed the source of the validation failure. We do mark a delegate as public in the IceInternal namespace (cpp/src/Ice/Network.h line 160 in the Ice source code). This is wrong, the public keyword should be removed to ensure this type isn't published in the WinMD file. We'll fix this for the next release.

    For the time being, do you really need to generate a WINMD file for your Windows Store-App? AFAIK, this is only necessary if you wish to create a Windows Runtime Component that can be re-used by Windows Store Applications. Turning off the WINMD generation in the project properties (Linker->Windows Metadata) would fix the problem (we do not generate those for the WinRT demos which is the reason why this validation test passed...).

    Cheers,
    Benoit.
  • Thanks Benoit,

    your the MAN!

    Just made my week!!!

    Best regards
    Markus