Diagnostizieren von Fehlerbedingungen für Komponenten für Windows-RuntimeDiagnosing Windows Runtime Component error conditions

Dieser Artikel enthält zusätzliche Informationen zu den Einschränkungen für Windows-Runtime Komponenten, die mit verwaltetem Code geschrieben wurden.This article provides additional information about restrictions on Windows Runtime components written with managed code. Es erweitert die Informationen, die in Fehlermeldungen von Winmdexp.exe (Windows-Runtime Metadata-Export Tool)bereitgestellt werden, und ergänzt die Informationen zu den Einschränkungen, die in Windows-Runtime Komponenten mit c# und Visual Basicbereitgestellt werden.It expands on the information that is provided in error messages from Winmdexp.exe (Windows Runtime Metadata Export Tool), and complements the information on restrictions that is provided in Windows Runtime components with C# and Visual Basic.

In diesem Artikel werden aber nicht alle Fehler abgedeckt.This article doesn’t cover all errors. Die hier beschriebenen Fehler sind in allgemeine Kategorien eingeteilt, und jede Kategorie enthält eine Tabelle mit den zugehörigen Fehlermeldungen.The errors discussed here are grouped by general category, and each category includes a table of associated error messages. Suchen Sie nach dem Meldungstext (ohne bestimmte Werte für Platzhalter) oder der Meldungsnummer.Search for message text (omitting specific values for placeholders) or for message number. Falls Sie die benötigten Informationen hier nicht finden, können Sie mithilfe der Feedback-Schaltfläche am Ende dieses Artikels zur Verbesserung der Dokumentation beitragen.If you don’t find the information you need here, please help us improve the documentation by using the feedback button at the end of this article. Geben Sie dabei die Fehlermeldung an.Include the error message. Alternativ können Sie einen Fehler auf der Microsoft Connect-Website melden.Alternatively, you can file a bug at the Microsoft Connect website.

Fehlermeldung beim Implementieren einer asynchronen Schnittstelle stellt den falschen Typ bereitError message for implementing async interface provides incorrect type

Verwaltete Windows-Runtime Komponenten können die universelle Windows-Plattform (UWP)-Schnittstellen, die asynchrone Aktionen oder Vorgänge darstellen (iasyncaction, iasyncactionwithprogress < tprogress > , iasyncoperation < TResult > oder iasyncoperationwithprogress < TResult, tprogress > ), nicht implementieren.Managed Windows Runtime components cannot implement the Universal Windows Platform (UWP) interfaces that represent asynchronous actions or operations (IAsyncAction, IAsyncActionWithProgress<TProgress>, IAsyncOperation<TResult>, or IAsyncOperationWithProgress<TResult, TProgress>). Stattdessen stellt .net die asyncinfo -Klasse zum Erstellen von asynchronen Vorgängen in Windows-Runtime-Komponenten bereit.Instead, .NET provides the AsyncInfo class for generating async operations in Windows Runtime components. Die Fehlermeldung, die Winmdexp.exe bei dem Versuch anzeigt, eine asynchrone Schnittstelle zu implementieren, verweist auf diese Klasse mit ihrem früheren Namen, AsyncInfoFactory.The error message that Winmdexp.exe displays when you try to implement an async interface incorrectly refers to this class by its former name, AsyncInfoFactory. .Net schließt die asyncinfofactory-Klasse nicht mehr ein..NET no longer includes the AsyncInfoFactory class.

FehlernummerError number MeldungstextMessage Text
WME1084WME1084 Der Typ "" {0} implementiert Windows-Runtime Async-Schnittstelle " {1} ".Type '{0}' implements Windows Runtime async interface '{1}'. Windows-Runtime-Typen dürfen keine Async-Schnittstellen implementieren.Windows Runtime types cannot implement async interfaces. Verwenden Sie die System.Runtime.InteropServices.WindowsRuntime.AsyncInfo-Klasse, um asynchrone Vorgänge für den Export in die Windows-Runtime zu erstellen.Please use the System.Runtime.InteropServices.WindowsRuntime.AsyncInfoFactory class to generate async operations for export to Windows Runtime.

Hinweis   In den Fehlermeldungen, die auf den Windows-Runtime verweisen, wird eine alte Terminologie verwendet.Note The error messages that refer to the Windows Runtime use an old terminology. Dies wird nun als die universelle Windows-Plattform (UWP) bezeichnet.This is now referred to as the Universal Windows Platform (UWP). Zum Beispiel werden Windows-Runtime-Typen jetzt als UWP-Typen bezeichnet.For example, Windows Runtime types are now called UWP types.

Fehlende Verweise auf mscorlib.dll oder System.Runtime.dllMissing references to mscorlib.dll or System.Runtime.dll

Dieses Problem tritt nur auf, wenn Sie Winmdexp.exe aus der Befehlszeile ausführen.This issue occurs only when you use Winmdexp.exe from the command line. Es wird empfohlen, die/Reference-Option zu verwenden, um Verweise auf mscorlib.dll und System.Runtime.dll aus den .NET Framework kernverweisassemblys einzuschließen, die sich in "% Program Files (x86)% Verweisassemblys \ \ Microsoft Framework" befinden \ \ . Netcore \ v 4.5 "("% Program Files% \ ... " auf einem 32-Bit-Computer).We recommend that you use the /reference option to include references to both mscorlib.dll and System.Runtime.dll from the .NET Framework core reference assemblies, which are located in "%ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5" ("%ProgramFiles%\..." on a 32-bit computer).

FehlernummerError number MeldungstextMessage Text
WME1009WME1009 Es wurde kein Verweis auf "mscorlib.dll" festgelegt.No reference was made to mscorlib.dll. Für den ordnungsgemäßen Export ist ein Verweis auf diese Metadatendatei erforderlich.A reference to this metadata file is required in order to export correctly.
WME1090WME1090 Die Kernverweisassembly konnte nicht ermittelt werden.Could not determine the core reference assembly. Stellen Sie sicher, dass mithilfe des /reference-Schalters auf "mscorlib.dll" und "System.Runtime.dll" verwiesen wird.Please make sure mscorlib.dll and System.Runtime.dll is referenced using the /reference switch.

Operatorüberladung ist nicht zulässigOperator overloading is not allowed

In einer Komponente für Windows-Runtime, die in verwaltetem Code geschrieben wurde, können Sie keine überladenen Operatoren für öffentliche Typen verfügbar machen.In a Windows Runtime Component written in managed code, you cannot expose overloaded operators on public types.

Hinweis   In der Fehlermeldung wird der Operator anhand seines metadatennamens identifiziert, z. b. "op _ Addition", "op _ Multiplikation", "op _ ExclusiveOr", " _ implizite Konvertierung" (implizite Konvertierung) usw.Note In the error message, the operator is identified by its metadata name, such as op_Addition, op_Multiply, op_ExclusiveOr, op_Implicit (implicit conversion), and so on.

FehlernummerError number MeldungstextMessage Text
WME1087WME1087 " {0} " ist eine Operator Überladung.'{0}' is an operator overload. Verwaltete Typen können in der Windows-Runtime keine überladenen Operatoren verfügbar machen.Managed types cannot expose operator overloads in the Windows Runtime.

Konstruktoren einer Klasse haben die gleiche Anzahl von ParameternConstructors on a class have the same number of parameters

In der UWP kann eine Klasse nur einen Konstruktor mit einer bestimmten Anzahl von Parametern haben. Sie können z. B. keinen Konstruktor verwenden, der einen einzelnen Parameter vom Typ String und einen anderen einzelnen Parameter vom Typ int (Integer in Visual Basic) aufweist.In the UWP, a class can have only one constructor with a given number of parameters; for example, you can't have one constructor that has a single parameter of type String and another that has a single parameter of type int (Integer in Visual Basic). Das Problem kann nur umgangen werden, indem Sie für jeden Konstruktor eine andere Anzahl von Parametern verwenden.The only workaround is to use a different number of parameters for each constructor.

FehlernummerError number MeldungstextMessage Text
WME1099WME1099 Der Typ "" {0} verfügt über mehrere Konstruktoren mit " {1} " Argument (e).Type '{0}' has multiple constructors with '{1}' argument(s). Windows-Runtime-Typen dürfen nicht mehrere Konstruktoren mit derselben Anzahl von Argumenten enthalten.Windows Runtime types cannot have multiple constructors with the same number of arguments.

Ein Standard für Überladungen mit derselben Anzahl von Parametern muss festgelegt werdenMust specify a default for overloads that have the same number of parameters

In der UWP können überladene Methoden nur dann über dieselbe Anzahl von Parametern verfügen, wenn eine Überladung als Standardüberladung angegeben wird.In the UWP, overloaded methods can have the same number of parameters only if one overload is specified as the default overload. Weitere Informationen finden Sie unter "überladene Methoden" in Windows-Runtime Komponenten mit c# und Visual Basic.See "Overloaded Methods" in Windows Runtime components with C# and Visual Basic.

FehlernummerError number MeldungstextMessage Text
WME1059WME1059 {0}Über Ladungen mit mehreren Parametern von " {1} . {2} " sind mit Windows. Foundation. Metadata. defauldeverloadattribute versehen.Multiple {0}-parameter overloads of '{1}.{2}' are decorated with Windows.Foundation.Metadata.DefaultOverloadAttribute.
WME1085WME1085 Die {0} -Parameter Überladungen von {1} . {2} müssen genau eine Methode als Standard Überladung angegeben haben, indem Sie Sie mit Windows. Foundation. Metadata. defauldeverloadattribute versehen.The {0}-parameter overloads of {1}.{2} must have exactly one method specified as the default overload by decorating it with Windows.Foundation.Metadata.DefaultOverloadAttribute.

Namespacefehler und ungültige Namen für die AusgabedateiNamespace errors and invalid names for the output file

In der universellen Windows-Plattform müssen sich alle öffentlichen Typen in einer Windows-Metadatendatei (WINMD) in einem Namespace mit demselben Namen wie die WINMD-Datei oder in Subnamespaces des Dateinamens befinden.In the Universal Windows Platform, all the public types in a Windows metadata (.winmd) file must be in a namespace that shares the .winmd file name, or in sub-namespaces of the file name. Wenn Ihr Visual Studio-Projekt beispielsweise A.B heißt (d. h. die Komponente für Windows-Runtime ist A.B.WINMD), kann es die öffentlichen Klassen A.B.Class1 und A.B.C.Class2 enthalten, aber nicht A.Class3 (WME0006) oder D.Class4 (WME1044).For example, if your Visual Studio project is named A.B (that is, your Windows Runtime Component is A.B.winmd), it can contain public classes A.B.Class1 and A.B.C.Class2, but not A.Class3 (WME0006) or D.Class4 (WME1044).

Hinweis Diese Einschränkungen gelten nur für öffentliche Typen, nicht jedoch für bei der Implementierung verwendete private Typen.Note These restrictions apply only to public types, not to private types used in your implementation.

Für A.Class3 können Sie Class3 in einen anderen Namespace verschieben oder den Namen der Komponente für Windows-Runtime in A.WINMD ändern.In the case of A.Class3, you can either move Class3 to another namespace or change the name of the Windows Runtime Component to A.winmd. Obwohl WME0006 eine Warnung ist, sollten Sie sie als Fehler behandeln.Although WME0006 is a warning, you should treat it as an error. Im vorherigen Beispiel kann A.Class3 nicht vom Code, der A.B.WINMD aufruft, gefunden werden.In the previous example, code that calls A.B.winmd will be unable to locate A.Class3.

Im Fall von D.Class4 kann kein Dateiname beides, D.Class4 und Klassen im A.B-Namespace, enthalten. Das Ändern des Namens der Komponente für Windows-Runtime ist daher keine Lösung.In the case of D.Class4, no file name can contain both D.Class4 and classes in the A.B namespace, so changing the name of the Windows Runtime Component is not an option. Sie können D.Class4 entweder in einen anderen Namespace verschieben oder in eine andere Komponente für Windows-Runtime einfügen.You can either move D.Class4 to another namespace, or put it in another Windows Runtime Component.

Das Dateisystem kann nicht zwischen Groß- und Kleinbuchstaben unterscheiden. Namespaces mit unterschiedlicher Groß-/Kleinschreibung sind daher nicht zulässig (WME1067).The file system can't distinguish between uppercase and lowercase, so namespaces that differ by case are not allowed (WME1067).

Die Komponente muss mindestens einen public sealed-Typ (Public NotInheritable in Visual Basic) enthalten.Your component must contain at least one public sealed type (Public NotInheritable in Visual Basic). Andernfalls erhalten Sie die Fehlermeldung WME1042 oder WME1043, je nachdem, ob die Komponente private Typen enthält.If not, you will get WME1042 or WME1043, depending on whether your component contains private types.

Ein Typ in einer Komponente für Windows-Runtime darf nicht wie ein Namespace benannt werden (WME1068).A type in a Windows Runtime Component cannot have a name that is the same as a namespace (WME1068).

Achtung Wenn Sie Winmdexp.exe direkt aufrufen und für die Benennung der Komponente für Windows-Runtime nicht die Option „/out” verwenden, versucht Winmdexp.exe, einen Namen zu generieren, der alle Namespaces in der Komponente enthält.Caution If you call Winmdexp.exe directly and don't use the /out option to specify a name for your Windows Runtime Component, Winmdexp.exe tries to generate a name that includes all the namespaces in the component. Die Umbenennung von Namespaces kann zur Änderung des Komponentennamens führen.Renaming namespaces can change the name of your component.

 

FehlernummerError number MeldungstextMessage Text
WME0006WME0006 " {0} " ist kein gültiger winmd-Dateiname für diese Assembly.'{0}' is not a valid winmd file name for this assembly. Alle Typen in einer Windows-Metadatendatei müssen sich in einem Subnamespace des im Dateinamen enthaltenen Namespace befinden.All types within a Windows Metadata file must exist in a sub namespace of the namespace that is implied by the file name. Typen, die nicht in solch einem Subnamespace vorhanden sind, werden zur Laufzeit nicht gefunden.Types that do not exist in such a sub namespace cannot be located at runtime. In dieser Assembly lautet der kleinste gemeinsame Namespace, der als Dateiname verwendet werden könnte, '{1}'.In this assembly, the smallest common namespace that could serve as a filename is '{1}'.
WME1042WME1042 Das Eingabemodul muss mindestens einen öffentlichen Typ enthalten, der sich in einem Namespace befindet.Input module must contain at least one public type that is located inside a namespace.
WME1043WME1043 Das Eingabemodul muss mindestens einen öffentlichen Typ enthalten, der sich in einem Namespace befindet.Input module must contain at least one public type that is located inside a namespace. In den Namespaces wurden nur private Typen gefunden.The only types found inside namespaces are private.
WME1044WME1044 Ein öffentlicher Typ hat einen Namespace (" {1} "), der kein gemeinsames Präfix mit anderen Namespaces (" {0} ") aufweist.A public type has a namespace ('{1}') that shares no common prefix with other namespaces ('{0}'). Alle Typen in einer Windows-Metadatendatei müssen sich in einem Subnamespace des im Dateinamen enthaltenen Namespace befinden.All types within a Windows Metadata file must exist in a sub namespace of the namespace that is implied by the file name.
WME1067WME1067 Namespace Namen dürfen sich nicht nur in der Groß-/Kleinschreibung unterscheiden: {0} {1}Namespace names cannot differ only by case: '{0}', '{1}'.
WME1068WME1068 Der Typ " {0} " darf nicht denselben Namen wie der Namespace " {1} " aufweisen.Type '{0}' cannot have the same name as namespace '{1}'.

Exportieren von Typen, die keine gültigen universellen Windows-Plattform-Typen sindExporting types that aren't valid Universal Windows Platform types

Die öffentliche Schnittstelle der Komponente darf nur UWP-Typen verfügbar machen.The public interface of your component must expose only UWP types. .Net bietet jedoch Zuordnungen für eine Reihe häufig verwendeter Typen, die sich in .net und UWP leicht unterscheiden.However, .NET provides mappings for a number of commonly used types that are slightly different in .NET and the UWP. Dadurch kann der .NET-Entwickler mit vertrauten Typen arbeiten, anstatt neue zu erlernen.This enables the .NET developer to work with familiar types instead of learning new ones. Sie können diese zugeordneten .NET-Typen in der öffentlichen-Schnittstelle Ihrer Komponente verwenden.You can use these mapped .NET types in the public interface of your component. Weitere Informationen finden Sie unter "Deklarieren von Typen in Windows-Runtime Komponenten" und "übergeben von universelle Windows-Plattform Typen an verwalteten Code" in Windows-Runtime Komponenten mit c# und Visual Basicsowie .net-Zuordnungen von Windows-Runtime Typen.See "Declaring types in Windows Runtime components" and "Passing Universal Windows Platform types to managed code" in Windows Runtime components with C# and Visual Basic, and .NET mappings of Windows Runtime types.

Viele dieser Zuordnungen sind Schnittstellen.Many of these mappings are interfaces. Zum Beispiel wird IList<T> der UWP-Schnittstelle IVector<T> zugeordnet.For example, IList<T> maps to the UWP interface IVector<T>. Wenn Sie List<string> (List(Of String) in Visual Basic) anstelle von IList<string> als Parametertyp verwenden, stellt Winmdexp.exe eine Liste von Alternativen zur Verfügung, die alle von List<T> implementierten, zugeordneten Schnittstellen enthält.If you use List<string> (List(Of String) in Visual Basic) instead of IList<string> as a parameter type, Winmdexp.exe provides a list of alternatives that includes all the mapped interfaces implemented by List<T>. Bei Verwendung von geschachtelten generischen Typen, wie z. b. List < Dictionary < int, String > > (List (of Dictionary (of Integer, String)) in Visual Basic), bietet Winmdexp.exe Optionen für jede Schachtelungs Ebene.If you use nested generic types, such as List<Dictionary<int, string>> (List(Of Dictionary(Of Integer, String)) in Visual Basic), Winmdexp.exe offers choices for each level of nesting. Diese Listen können recht umfangreich sein.These lists can become quite long.

Im Allgemeinen sollte die Schnittstelle ausgewählt werden, die dem Typ am nächsten ist.In general, the best choice is the interface that is closest to the type. Für Dictionary<int, string> ist beispielsweise IDictionary<int, string> am besten geeignet.For example, for Dictionary<int, string>, the best choice is most likely IDictionary<int, string>.

Wichtig JavaScript verwendet die Schnittstelle, die zuerst in der Liste der Schnittstellen angezeigt wird, die ein verwalteter Typ implementiert.Important JavaScript uses the interface that appears first in the list of interfaces that a managed type implements. Wenn Sie beispielsweise „Dictionary<int, string>“ an JavaScript-Code zurückgeben, wird „IDictionary<int, string>“ angezeigt, unabhängig davon, welche Schnittstelle Sie als Rückgabetyp angeben.For example, if you return Dictionary<int, string> to JavaScript code, it appears as IDictionary<int, string> no matter which interface you specify as the return type. Das bedeutet, dass die erste Schnittstelle Member enthalten muss, die in den nächsten Schnittstellen erscheinen, damit diese Member für JavaScript sichtbar sind.This means that if the first interface doesn't include a member that appears on later interfaces, that member isn't visible to JavaScript.

Achtung Vermeiden Sie die nicht generischen Schnittstellen IList und IEnumerable, wenn die Komponente von JavaScript verwendet wird.Caution Avoid using the non-generic IList and IEnumerable interfaces if your component will be used by JavaScript. Diese Schnittstellen werden IBindableVector und IBindableIterator zugeordnet.These interfaces map to IBindableVector and IBindableIterator, respectively. Sie unterstützen die Bindung für XAML-Steuerelemente und sind für JavaScript nicht sichtbar.They support binding for XAML controls, and are invisible to JavaScript. JavaScript generiert die Laufzeitfehlermeldung „Die Funktion '%s' kann aufgrund einer ungültigen Signatur nicht aufgerufen werden.”JavaScript issues the run-time error "The function 'X' has an invalid signature and cannot be called."

 

FehlernummerError number MeldungstextMessage Text
WME1033WME1033 Die Methode ' ' {0} weist den Parameter ' {1} ' vom Typ ' {2} ' auf.Method '{0}' has parameter '{1}' of type '{2}'. '{2}' ist kein gültiger Windows-Runtime-Parametertyp.'{2}' is not a valid Windows Runtime parameter type.
WME1038WME1038 Die Methode ' {0} ' weist in der Signatur einen Parameter vom Typ ' ' {1} auf.Method '{0}' has a parameter of type '{1}' in its signature. Obwohl dieser Typ kein gültiger Windows-Runtime-Typ ist, implementiert er Schnittstellen, bei denen es sich um gültige Windows-Runtime-Typen handelt.Although this type is not a valid Windows Runtime type, it implements interfaces that are valid Windows Runtime types. Ändern Sie die Methodensignatur stattdessen eventuell für die Verwendung eines der folgenden Typen: '{2}'.Consider changing the method signature to use one of the following types instead: '{2}'.
WME1039WME1039

Die Methode ' {0} ' weist in der Signatur einen Parameter vom Typ ' ' {1} auf.Method '{0}' has a parameter of type '{1}' in its signature. Obwohl es sich bei diesem generischen Typ nicht um einen gültigen Windows-Runtime-Typ handelt, werden von diesem Typ oder von dessen generischen Parametern Schnittstellen implementiert, die gültige Windows-Runtime-Typen sind.Although this generic type is not a valid Windows Runtime type, the type or its generic parameters implement interfaces that are valid Windows Runtime types. {2}{2}

> \*\*Hinweis** Bei {2} fügt Winmdexp.exe eine Liste von Alternativen an, z. b. "ändern Sie den Typ" System. Collections. Generic. List < T > "in der Methoden Signatur stattdessen in einen der folgenden Typen:" System. Collections. Generic. IList < t > , System. Collections. Generic. Iread onlylist < t > , System. Collections. Generic. IEnumerable < t > ". > \*\*Note** For {2}, Winmdexp.exe appends a list of alternatives, such as "Consider changing the type 'System.Collections.Generic.List<T>' in the method signature to one of the following types instead: 'System.Collections.Generic.IList<T>, System.Collections.Generic.IReadOnlyList<T>, System.Collections.Generic.IEnumerable<T>'."
WME1040WME1040 Die Methode ' {0} ' weist in der Signatur einen Parameter vom Typ ' ' {1} auf.Method '{0}' has a parameter of type '{1}' in its signature. Verwenden Sie anstelle eines verwalteten Aufgabentyps Windows.Foundation.IAsyncAction, Windows.Foundation.IAsyncOperation oder eine der anderen Async-Schnittstellen für Windows-Runtime.Instead of using a managed Task type, use Windows.Foundation.IAsyncAction, Windows.Foundation.IAsyncOperation, or one of the other Windows Runtime async interfaces. Das Standardmuster für .NET-Await wird auch auf diese Schnittstellen angewendet.The standard .NET await pattern also applies to these interfaces. Weitere Informationen zum Konvertieren von verwalteten Task-Objekten in Async-Schnittstellen für Windows-Runtime finden Sie unter „ System.Runtime.InteropServices.WindowsRuntime.AsyncInfo”.Please see System.Runtime.InteropServices.WindowsRuntime.AsyncInfo for more information about converting managed task objects to Windows Runtime async interfaces.

 

Strukturen, die Felder mit unzulässigen Typen enthaltenStructures that contain fields of disallowed types

In der UWP kann eine Struktur nur Felder enthalten, und nur Strukturen können Felder enthalten.In the UWP, a structure can contain only fields, and only structures can contain fields. Diese Felder müssen öffentlich sein.Those fields must be public. Zu den gültigen Feldtypen zählen Strukturen, Enumerationen und primitive Typen.Valid field types include enumerations, structures, and primitive types.

FehlernummerError number MeldungstextMessage Text
WME1060WME1060 Die Struktur "" {0} weist das Feld " {1} " vom Typ " {2} " auf.Structure '{0}' has field '{1}' of type '{2}'. '{2}' ist kein gültiger Windows-Runtime-Feldtyp.'{2}' is not a valid Windows Runtime field type. Die Felder in einer Windows-Runtime-Struktur müssen vom Typ UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double, Boolean, String, Enum sein oder selbst eine Struktur darstellen.Each field in a Windows Runtime structure can only be UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double, Boolean, String, Enum, or itself a structure.

 

Einschränkungen für Arrays in MembersignaturenRestrictions on arrays in member signatures

In der UWP müssen Arrays in Membersignaturen eindimensional sein und eine Untergrenze von 0 (null) aufweisen.In the UWP, arrays in member signatures must be one-dimensional with a lower bound of 0 (zero). Geschachtelte Arraytypen wie myArray[][] (myArray()() in Visual Basic) sind nicht zulässig.Nested array types such as myArray[][] (myArray()() in Visual Basic) are not allowed.

Hinweis   Diese Einschränkung gilt nicht für Arrays, die Sie intern in der Implementierung verwenden.Note This restriction does not apply to arrays you use internally in your implementation.

 

FehlernummerError number MeldungstextMessage Text
WME1034WME1034 Die {0} -Methode hat ein Array vom Typ " {1} " mit einer unteren Grenze ungleich 0 (null) in der Signatur.Method '{0}' has an array of type '{1}' with non-zero lower bound in its signature. Arrays in Windows-Runtime-Methodensignaturen müssen eine Untergrenze von NULL aufweisen.Arrays in Windows Runtime method signatures must have a lower bound of zero.
WME1035WME1035 Die Methode ' {0} ' weist in der Signatur ein mehrdimensionales Array vom Typ ' ' {1} auf.Method '{0}' has a multi-dimensional array of type '{1}' in its signature. Arrays in Signaturen von Windows-Runtime-Methoden müssen eindimensional sein.Arrays in Windows Runtime method signatures must be one dimensional.
WME1036WME1036 Die Methode ' {0} ' weist in der Signatur ein ein Array vom Typ ' {1} ' auf.Method '{0}' has a nested array of type '{1}' in its signature. Arrays dürfen in Windows-Runtime-Methodensignaturen nicht geschachtelt sein.Arrays in Windows Runtime method signatures cannot be nested.

 

Arrayparameter müssen angeben, ob Arrayinhalt lesbar oder schreibbar sindArray parameters must specify whether array contents are readable or writable

In der UWP müssen Parameter schreibgeschützt oder lesegeschützt sein.In the UWP, parameters must be read-only or write-only. Parameter können nicht mit ref (ByRef ohne das OutAttribute-Attribut in Visual Basic) gekennzeichnet werden.Parameters cannot be marked ref (ByRef without the OutAttribute attribute in Visual Basic). Dies gilt für den Inhalt von Arrays. Daher müssen Arrayparameter angeben, ob der Arrayinhalt schreibgeschützt oder lesegeschützt ist.This applies to the contents of arrays, so array parameters must indicate whether the array contents are read-only or write-only. Die Richtung ist für out-Parameter klar (ByRef-Parameter mit dem OutAttribute-Attribut in Visual Basic), aber Arrayparameter, die per Wert übergeben werden (ByVal in Visual Basic), müssen gekennzeichnet werden.The direction is clear for out parameters (ByRef parameter with the OutAttribute attribute in Visual Basic), but array parameters that are passed by value (ByVal in Visual Basic) must be marked. Weitere Informationen hierzu finden Sie unter Übergeben von Arrays an eine Komponente für Windows-Runtime.See Passing arrays to a Windows Runtime Component.

FehlernummerError number MeldungstextMessage Text
WME1101WME1101 Die Methode ' ' {0} weist den Parameter ' {1} ' auf. dabei handelt es sich um ein Array, das sowohl {2} als auch aufweist {3} .Method '{0}' has parameter '{1}' which is an array, and which has both {2} and {3}. Die Inhalte von Arrayparametern müssen in der Windows-Runtime entweder lesbar oder schreibbar sein.In the Windows Runtime, the contents array parameters must be either readable or writable. Entfernen Sie eines der Attribute aus '{1}'.Please remove one of the attributes from '{1}'.
WME1102WME1102 Die Methode ' ' {0} weist den Ausgabeparameter ' {1} ' auf. dabei handelt es sich um ein Array, das jedoch über verfügt {2} .Method '{0}' has an output parameter '{1}' which is an array, but which has {2}. Die Inhalte von Ausgabearrays sind in der Windows-Runtime schreibbar.In the Windows Runtime, the contents of output arrays are writable. Entfernen Sie das Attribut aus '{1}'.Please remove the attribute from '{1}'.
WME1103WME1103 Die Methode ' ' {0} weist den Parameter ' {1} ' auf, bei dem es sich um ein Array handelt, das entweder System. Runtime. InteropServices. InAttribute oder System. Runtime. InteropServices. OutAttribute aufweist.Method '{0}' has parameter '{1}' which is an array, and which has either a System.Runtime.InteropServices.InAttribute or a System.Runtime.InteropServices.OutAttribute. Arrayparameter müssen für Windows-Runtime entweder {2} oder {3} enthalten.In the Windows Runtime, array parameters must have either {2} or {3}. Entfernen Sie diese Attribute, oder ersetzen Sie sie bei Bedarf durch das entsprechende Windows-Runtime-Attribut.Please remove these attributes or replace them with the appropriate Windows Runtime attribute if necessary.
WME1104WME1104 Die Methode ' ' {0} weist den Parameter ' {1} ' auf, bei dem es sich nicht um ein Array handelt und das entweder einen {2} oder einen aufweist {3} .Method '{0}' has parameter '{1}' which is not an array, and which has either a {2} or a {3}. Das Markieren von Nicht-Arrayparametern mit {2} oder {3} wird von Windows-Runtime nicht unterstützt.Windows Runtime does not support marking non-array parameters with {2} or {3}.
WME1105WME1105 Die Methode ' ' {0} weist den Parameter ' {1} ' mit einem System. Runtime. InteropServices. InAttribute oder System. Runtime. InteropServices. OutAttribute auf.Method '{0}' has parameter '{1}' with a System.Runtime.InteropServices.InAttribute or System.Runtime.InteropServices.OutAttribute. Das Markieren von Parametern mit System.Runtime.InteropServices.InAttribute oder System.Runtime.InteropServices.OutAttribute wird von Windows-Runtime nicht unterstützt.Windows Runtime does not support marking parameters with System.Runtime.InteropServices.InAttribute or System.Runtime.InteropServices.OutAttribute. Entfernen Sie eventuell System.Runtime.InteropServices.InAttribute, und ersetzen Sie System.Runtime.InteropServices.OutAttribute stattdessen durch den 'out'-Modifizierer.Please consider removing System.Runtime.InteropServices.InAttribute and replace System.Runtime.InteropServices.OutAttribute with 'out' modifier instead. Die Methode ' ' {0} weist den Parameter ' {1} ' mit einem System. Runtime. InteropServices. InAttribute oder System. Runtime. InteropServices. OutAttribute auf.Method '{0}' has parameter '{1}' with a System.Runtime.InteropServices.InAttribute or System.Runtime.InteropServices.OutAttribute. Windows-Runtime unterstützt nur das Markieren von ByRef-Parametern mit System.Runtime.InteropServices.OutAttribute. Eine andere Verwendung dieser Attribute ist nicht möglich.Windows Runtime only supports marking ByRef parameters with System.Runtime.InteropServices.OutAttribute, and does not support other usages of those attributes.
WME1106WME1106 Die Methode ' ' {0} weist den Parameter ' {1} ' auf, der ein Array ist.Method '{0}' has parameter '{1}' which is an array. Die Inhalte von Array-Parametern müssen in der Windows-Runtime entweder lesbar oder schreibbar sein.In the Windows Runtime, the contents of array parameters must be either readable or writable. Wenden Sie entweder {2} oder {3} auf '{1}' an.Please apply either {2} or {3} to '{1}'.

Member mit einem Parameter mit dem Namen „Value"Member with a parameter named "value"

In der UWP werden Rückgabewerte als Ausgabeparameter betrachtet, und die Namen der Parameter müssen eindeutig sein.In the UWP, return values are considered to be output parameters, and the names of parameters must be unique. Standardmäßig gibt Winmdexp.exe dem Rückgabewert den Namen „Value".By default, Winmdexp.exe gives the return value the name "value". Wenn die Methode einen Parameter mit dem Namen „Value" hat, erhalten Sie die Fehlermeldung WME1092.If your method has a parameter named "value", you will get error WME1092. Es gibt zwei Korrekturmöglichkeiten:There are two ways to correct this:

  • Nennen Sie den Parameter nicht „Value" (in den Eigenschaftenaccessoren sollte der Parametername nicht „returnValue" lauten).Give your parameter a name other than "value" (in property accessors, a name other than "returnValue").

  • Verwenden Sie das ReturnValueNameAttribute-Attribut, um den Namen des Rückgabewerts zu ändern, wie hier gezeigt:Use the ReturnValueNameAttribute attribute to change the name of the return value, as shown here:

    using System.Runtime.InteropServices;
    using System.Runtime.InteropServices.WindowsRuntime;
    
    [return: ReturnValueName("average")]
    public int GetAverage(out int lowValue, out int highValue)
    
    Imports System.Runtime.InteropServices
    Imports System.Runtime.InteropServices.WindowsRuntime
    
    Public Function GetAverage(<Out> ByRef lowValue As Integer, _
    <Out> ByRef highValue As Integer) As <ReturnValueName("average")> String
    

Hinweis Wenn Sie den Namen des Rückgabewerts ändern und der neue Namen mit dem Namen eines anderen Parameters in Konflikt steht, erhalten Sie die Fehlermeldung WME1091.Note If you change the name of the return value, and the new name collides with the name of another parameter, you will get error WME1091.

JavaScript-Code kann auf die Ausgabeparameter einer Methode, einschließlich des Rückgabewerts, über den Namen zugreifen.JavaScript code can access the output parameters of a method by name, including the return value. Ein Beispiel finden Sie unter ReturnValueNameAttribute.For an example, see the ReturnValueNameAttribute attribute.

FehlernummerError number MeldungstextMessage Text
WME1091WME1091 Die Methode " { 0}" weist den Rückgabewert " { 1}" auf, der mit einem Parameternamen identisch ist.The method '{0}' has the return value named '{1}' which is the same as a parameter name. Methodenparameter und Rückgabewerte müssen für Windows-Runtime eindeutige Namen aufweisen.Windows Runtime method parameters and return value must have unique names.
WME1092WME1092 Die Methode " { 0}" weist einen Parameter mit dem Namen " { 1}" auf, der mit dem Standardnamen des Rückgabewerts identisch ist.The method '{0}' has a parameter named '{1}' which is the same as the default return value name. Verwenden Sie ggf. einen anderen Namen für den Parameter, oder verwenden Sie das System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute, um den Namen des Rückgabewerts explizit anzugeben.Consider using another name for the parameter or use the System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute to explicitly specify the name of the return value.

Hinweis Der Standardname lautet „returnValue" für Eigenschaftenaccessoren und „Value" für alle anderen Methoden.Note The default name is "returnValue" for property accessors and "value" for all other methods.