none
Fehler beim Generieren einer XML-Serialisierungsassembly mit sgen.exe RRS feed

  • Frage

  • Hallo,

    ich habe eine weitere Frage in Zusammenhang mit folgendem Thread. Um die Startleistung des XMLSerializers zu erhöhen, wollte ich eine XML-Serialisierungsassembly unter Zuhilfenahme von sgen.exe erstellen. Bei komplexen Objekten, wie in meinem Fall, soll das von Vorteil sein (s. Link). Ich führe das Kommando:

    "sgen.exe" /assembly:"$(TargetPath)"

    nach dem Kompilieren der DLL über ein Script aus. Beim Erstellen erhalte ich folgende Fehlermeldung:

    The top XML element 'cacheOwner' from namespace '' references distinct types Geocache.CacheV10.cacheOwner and Geocache.CacheV101.cacheOwner. Use XML attributes to specify another XML name or namespace for the element or types.

    Die Klassen erhalten über XML Attribute jeweils andere Namespaces. Der Code ist unten aufgeführt:

     

        <System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038"), _
         System.SerializableAttribute(), _
         System.Diagnostics.DebuggerStepThroughAttribute(), _
         System.ComponentModel.DesignerCategoryAttribute("code"), _
         System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:=Geocache.Constants.CACHE10)> _
        Public Class cacheOwner
    
        ...
    
        End Class
    

     

    und

     

        <System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038"), _
         System.SerializableAttribute(), _
         System.Diagnostics.DebuggerStepThroughAttribute(), _
         System.ComponentModel.DesignerCategoryAttribute("code"), _
         System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True, [Namespace]:=Geocache.Constants.CACHE101)> _
        Public Class cacheOwner
    
        ...
    
        End Class
    

     

    Die Namespaces sind in der Klasse Constants untergebracht und sehen folgendermassen aus:

     

    Public Class Constants
    
        Public Const GPX10 As String = "http://www.topografix.com/GPX/1/0"
        Public Const GPX11 As String = "http://www.topografix.com/GPX/1/1"
        Public Const CACHE10 As String = "http://www.groundspeak.com/cache/1/0"
        Public Const CACHE101 As String = "http://www.groundspeak.com/cache/1/0/1"
        Public Const CACHE11 As String = "http://www.groundspeak.com/cache/1/1"
        Public Const OPENCACHE10 As String = "http://www.opencaching.com/xmlschemas/opencaching/1/0"
    
    End Class
    

    Weshalb kommt sgen.exe damit nicht klar? Kann mir jemand helfen?

     

    Gruß, LittleBlueBird




    Freitag, 9. Dezember 2011 22:49

Antworten

  • Hallo Robert,

    wie bereits in meiner vorherigen Antwort aufgeführt, habe ich die Klassen in mehrere DLLs aufgeteilt. Damit konnte ich auch die Serialisierungsassemblies mit sgen.exe generieren. Wünschenswert wäre jedoch, die Klassen in eine DLL zu packen. Aber dann funktioniert es mit sgen.exe nicht mehr und dafür scheint es wohl keine Lösung zu geben. Da ich keine Antwort mehr erwarte, kann dieser Thread geschlossen werden. Ich markiere daher meine Antwort als "Lösung".

    Gruss, LittleBlueBird


    Montag, 6. Februar 2012 15:30

Alle Antworten