Diagnostic des conditions d’erreur d’un composant Windows RuntimeDiagnosing Windows Runtime Component error conditions

Cet article fournit des informations supplémentaires sur les restrictions relatives aux composants Windows Runtime écrits avec du code managé.This article provides additional information about restrictions on Windows Runtime components written with managed code. Il développe les informations fournies dans les messages d’erreur de Winmdexp.exe (Windows Runtime outil d’exportation de métadonnées)et complète les informations sur les restrictions fournies dans Windows Runtime Components avec C# et Visual Basic.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.

Cet article ne couvre pas toutes les erreurs.This article doesn’t cover all errors. Les erreurs décrites ici sont regroupées par catégorie générale, et chaque catégorie inclut un tableau des messages d’erreur associés.The errors discussed here are grouped by general category, and each category includes a table of associated error messages. Recherchez le texte du message (en omettant les valeurs spécifiques des espaces réservés) ou le numéro du message.Search for message text (omitting specific values for placeholders) or for message number. Si vous ne trouvez pas les informations dont vous avez besoin ici, veuillez nous aider à améliorer la documentation à l’aide du bouton de commentaire à la fin de cet article.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. Fournissez le message d’erreur.Include the error message. Autrement, vous pouvez déposer un bogue sur le site web Microsoft Connect.Alternatively, you can file a bug at the Microsoft Connect website.

Message d’erreur pour l’implémentation d’interface asynchrone qui fournit un type incorrectError message for implementing async interface provides incorrect type

Les composants de Windows Runtime managés ne peuvent pas implémenter les interfaces plateforme Windows universelle (UWP) qui représentent des actions ou des opérations asynchrones (IAsyncAction, IAsyncActionWithProgress < TProgress > , IAsyncOperation < TResult > ou IAsyncOperationWithProgress < TResult, TProgress > ).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>). Au lieu de cela, .NET fournit la classe AsyncInfo pour générer des opérations asynchrones dans les composants Windows Runtime.Instead, .NET provides the AsyncInfo class for generating async operations in Windows Runtime components. Le message d’erreur affiché par Winmdexp.exe quand vous essayez d’implémenter une interface asynchrone de façon incorrecte fait référence à cette classe en utilisant son ancien nom, 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 n’intègre plus la classe AsyncInfoFactory..NET no longer includes the AsyncInfoFactory class.

Numéro d'erreurError number Texte du messageMessage Text
WME1084WME1084 Le type' {0} 'implémente Windows Runtime interface Async' {1} '.Type '{0}' implements Windows Runtime async interface '{1}'. Les types Windows Runtime ne peuvent pas implémenter les interfaces asynchrones.Windows Runtime types cannot implement async interfaces. Veuillez utiliser la classe System.Runtime.InteropServices.WindowsRuntime.AsyncInfoFactory pour générer des opérations asynchrones afin d’exporter vers Windows Runtime.Please use the System.Runtime.InteropServices.WindowsRuntime.AsyncInfoFactory class to generate async operations for export to Windows Runtime.

Remarque   Les messages d’erreur qui font référence au Windows Runtime utilisent une ancienne terminologie.Note The error messages that refer to the Windows Runtime use an old terminology. On utilise maintenant l’appellation « plateforme Windows universelle (UWP) ».This is now referred to as the Universal Windows Platform (UWP). Par exemple, les types Windows Runtime sont désormais appelés types UWP.For example, Windows Runtime types are now called UWP types.

Références manquantes à mscorlib.dll ou System.Runtime.dllMissing references to mscorlib.dll or System.Runtime.dll

Ce problème se produit uniquement lorsque vous utilisez Winmdexp.exe à partir de la ligne de commande.This issue occurs only when you use Winmdexp.exe from the command line. Nous vous recommandons d’utiliser l’option/reference pour inclure des références à la fois à mscorlib.dll et System.Runtime.dll à partir des assemblys de référence .NET Framework Core, qui se trouvent dans "% ProgramFiles (x86)% \ Reference Assemblies \ Microsoft \ Framework \ . Netcore \ v 4.5 "("% ProgramFiles% \ ... " sur un ordinateur 32 bits).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).

Numéro d'erreurError number Texte du messageMessage Text
WME1009WME1009 Aucune référence n’a été faite à mscorlib.dll.No reference was made to mscorlib.dll. Une référence à ce fichier de métadonnées est requise pour exporter correctement.A reference to this metadata file is required in order to export correctly.
WME1090WME1090 Impossible de déterminer le principal assembly de référence.Could not determine the core reference assembly. Assurez-vous que mscorlib.dll et System.Runtime.dll sont référencés à l’aide du commutateur /reference.Please make sure mscorlib.dll and System.Runtime.dll is referenced using the /reference switch.

Surcharge d’opérateur non autoriséeOperator overloading is not allowed

Dans un composant Windows Runtime écrit en code managé, vous ne pouvez pas exposer les opérateurs surchargés sur les types publics.In a Windows Runtime Component written in managed code, you cannot expose overloaded operators on public types.

Remarque   Dans le message d’erreur, l’opérateur est identifié par son nom de métadonnées, par exemple op _ addition, op _ multiplier, op _ exclusive, op _ implicite (conversion implicite), et ainsi de suite.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.

Numéro d'erreurError number Texte du messageMessage Text
WME1087WME1087 ' {0} 'est une surcharge d’opérateur.'{0}' is an operator overload. Les types managés ne peuvent pas exposer les surcharges de l’opérateur dans le Windows Runtime.Managed types cannot expose operator overloads in the Windows Runtime.

Constructeurs d’une classe ayant le même nombre de paramètresConstructors on a class have the same number of parameters

Dans l’UWP, une classe ne peut avoir qu’un seul constructeur avec un nombre donné de paramètres ; par exemple, vous ne pouvez pas avoir un constructeur ayant un seul paramètre de type String et un autre possédant un seul paramètre de type int (Integer en Visual Basic).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). La seule solution consiste à utiliser un nombre différent de paramètres pour chaque constructeur.The only workaround is to use a different number of parameters for each constructor.

Numéro d'erreurError number Texte du messageMessage Text
WME1099WME1099 Le type' {0} 'a plusieurs constructeurs avec' {1} 'argument (s).Type '{0}' has multiple constructors with '{1}' argument(s). Les types Windows Runtime ne peuvent pas posséder plusieurs constructeurs ayant le même nombre d’arguments.Windows Runtime types cannot have multiple constructors with the same number of arguments.

Spécification obligatoire d’une valeur par défaut pour les surcharges ayant le même nombre de paramètresMust specify a default for overloads that have the same number of parameters

Dans l’UWP, les méthodes surchargées peuvent avoir le même nombre de paramètres uniquement si une surcharge est spécifiée en tant que celle par défaut.In the UWP, overloaded methods can have the same number of parameters only if one overload is specified as the default overload. Consultez « Méthodes surchargées » dans Windows Runtime composants avec C# et Visual Basic.See "Overloaded Methods" in Windows Runtime components with C# and Visual Basic.

Numéro d'erreurError number Texte du messageMessage Text
WME1059WME1059 Les {0} surcharges de plusieurs paramètres de' {1} . {2} 'sont décorées avec Windows. Foundation. Metadata. DefaultOverloadAttribute.Multiple {0}-parameter overloads of '{1}.{2}' are decorated with Windows.Foundation.Metadata.DefaultOverloadAttribute.
WME1085WME1085 Les {0} surcharges de paramètre-de {1} . {2} doivent avoir une seule méthode spécifiée comme surcharge par défaut en la décorant avec Windows. Foundation. Metadata. DefaultOverloadAttribute.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.

Erreurs d’espace de noms et noms non valides pour le fichier de sortieNamespace errors and invalid names for the output file

Dans la plateforme Windows universelle, tous les types publics dans un fichier de métadonnées Windows (.winmd) doivent se trouver dans un espace de noms qui partage le nom du fichier .winmd, ou dans des sous-espaces de noms du nom de fichier.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. Par exemple, si votre projet Visual Studio est nommé A.B (autrement dit, votre composant Windows Runtime est A.B.winmd), il peut contenir des classes publiques A.B.Class1 et A.B.C.Class2, mais pas A.Class3 (WME0006) ou 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).

Remarque Ces restrictions s’appliquent uniquement aux types publics, pas aux types privés utilisés dans votre implémentation.Note These restrictions apply only to public types, not to private types used in your implementation.

Dans le cas de A.Class3, vous pouvez déplacer Class3 dans un autre espace de noms ou remplacer le nom du composant Windows Runtime par A.winmd.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. Bien que WME0006 soit un avertissement, vous devez le traiter comme une erreur.Although WME0006 is a warning, you should treat it as an error. Dans l’exemple précédent, le code qui appelle A.B.winmd ne pourra pas localiser A.Class3.In the previous example, code that calls A.B.winmd will be unable to locate A.Class3.

Dans le cas de D.Class4, aucun nom de fichier ne peut contenir à la fois D.Class4 et des classes dans l’espace de noms A.B ; la modification du nom du composant Windows Runtime n’est donc pas possible.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. Vous pouvez déplacer D.Class4 vers un autre espace de noms ou le placer dans un autre composant Windows Runtime.You can either move D.Class4 to another namespace, or put it in another Windows Runtime Component.

Le système de fichiers ne peut pas effectuer la distinction entre majuscules et minuscules ; par conséquent, les espaces de noms dont la casse diffère ne sont pas autorisés (WME1067).The file system can't distinguish between uppercase and lowercase, so namespaces that differ by case are not allowed (WME1067).

Votre composant doit contenir au moins un type public sealed (Public NotInheritable en Visual Basic).Your component must contain at least one public sealed type (Public NotInheritable in Visual Basic). Si ce n’est pas le cas, vous obtiendrez WME1042 ou WME1043, selon si votre composant contient ou non des types privés.If not, you will get WME1042 or WME1043, depending on whether your component contains private types.

Un type dans un composant Windows Runtime ne peut pas avoir un nom identique à un espace de noms (WME1068).A type in a Windows Runtime Component cannot have a name that is the same as a namespace (WME1068).

Attention Si vous appelez Winmdexp.exe directement et que vous n’utilisez pas l’option/out pour spécifier un nom pour votre composant Windows Runtime, Winmdexp.exe essaie de générer un nom qui comprend tous les espaces de noms dans le composant.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. Le fait de renommer les espaces de noms peut modifier le nom de votre composant.Renaming namespaces can change the name of your component.

 

Numéro d'erreurError number Texte du messageMessage Text
WME0006WME0006 « {0} » n’est pas un nom de fichier winmd valide pour cet assembly.'{0}' is not a valid winmd file name for this assembly. Tous les types d’un fichier de métadonnées Windows doivent exister dans un sous-espace de noms de l’espace de noms impliqué par le nom de fichier.All types within a Windows Metadata file must exist in a sub namespace of the namespace that is implied by the file name. Les types qui n’existent pas dans un sous-espace de noms ne peuvent pas être localisés au moment de l’exécution.Types that do not exist in such a sub namespace cannot be located at runtime. Dans cet assembly, le plus petit espace de noms commun pouvant faire office de nom de fichier est « {1} ».In this assembly, the smallest common namespace that could serve as a filename is '{1}'.
WME1042WME1042 Le module d’entrée doit contenir au moins un type public se trouvant à l’intérieur d’un espace de noms.Input module must contain at least one public type that is located inside a namespace.
WME1043WME1043 Le module d’entrée doit contenir au moins un type public se trouvant à l’intérieur d’un espace de noms.Input module must contain at least one public type that is located inside a namespace. Les seuls types présents dans des espaces de noms sont privés.The only types found inside namespaces are private.
WME1044WME1044 Un type public a un espace de noms (« {1} ») qui ne partage aucun préfixe commun avec d’autres espaces de noms (« {0} »).A public type has a namespace ('{1}') that shares no common prefix with other namespaces ('{0}'). Tous les types d’un fichier de métadonnées Windows doivent exister dans un sous-espace de noms de l’espace de noms impliqué par le nom de fichier.All types within a Windows Metadata file must exist in a sub namespace of the namespace that is implied by the file name.
WME1067WME1067 Les noms d’espaces de noms ne peuvent pas différer uniquement par la casse : ' {0} ', ' {1} '.Namespace names cannot differ only by case: '{0}', '{1}'.
WME1068WME1068 Le type' {0} 'ne peut pas avoir le même nom que l’espace de noms' {1} '.Type '{0}' cannot have the same name as namespace '{1}'.

Exportation des types qui ne sont pas des types de plateforme Windows universelle validesExporting types that aren't valid Universal Windows Platform types

L’interface publique de votre composant doit exposer uniquement les types UWP.The public interface of your component must expose only UWP types. Toutefois, .NET fournit des mappages pour plusieurs types couramment utilisés qui sont légèrement différents dans .NET et UWP.However, .NET provides mappings for a number of commonly used types that are slightly different in .NET and the UWP. Cela permet au développeur .NET de travailler avec des types familiers au lieu d’en apprendre de nouveaux.This enables the .NET developer to work with familiar types instead of learning new ones. Vous pouvez utiliser ces types .NET mappés dans l’interface publique de votre composant.You can use these mapped .NET types in the public interface of your component. Consultez « Déclaration des types dans Windows Runtime Components » et « transmission de types plateforme Windows universelle au code managé » dans Windows Runtime composants avec C# et Visual Basic, et mappages .net des types de Windows Runtime.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.

Bon nombre de ces mappages sont des interfaces.Many of these mappings are interfaces. Par exemple, IList<T> mappe vers l’interface UWP IVector<T>.For example, IList<T> maps to the UWP interface IVector<T>. Si vous utilisez List<string> (List(Of String) en Visual Basic) au lieu de IList<string> en tant que type de paramètre, Winmdexp.exe fournit une liste de possibilités qui comprend toutes les interfaces mappées implémentées par List<T>.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>. Si vous utilisez des types génériques imbriqués, tels que List < Dictionary < int, String > > (List (of dictionary (Of Integer, string)) dans Visual Basic), Winmdexp.exe offre des choix pour chaque niveau d’imbrication.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. Ces listes peuvent considérablement s’allonger.These lists can become quite long.

En général, le meilleur choix est l’interface qui est la plus proche du type.In general, the best choice is the interface that is closest to the type. Par exemple, pour Dictionary<int, string>, le meilleur choix est sans doute IDictionary<int, string>.For example, for Dictionary<int, string>, the best choice is most likely IDictionary<int, string>.

Important JavaScript utilise l’interface qui apparaît en premier dans la liste des interfaces implémentées par un type managé.Important JavaScript uses the interface that appears first in the list of interfaces that a managed type implements. Par exemple, si vous retournez Dictionary<int, string> au code JavaScript, il apparaît comme IDictionary<int, string>, quelle que soit l’interface que vous spécifiez comme type de retour.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. Cela signifie que si la première interface n’inclut pas un membre qui apparaît sur les interfaces ultérieures, ce membre n’est pas visible pour JavaScript.This means that if the first interface doesn't include a member that appears on later interfaces, that member isn't visible to JavaScript.

Attention Évitez d’utiliser les interfaces IList et IEnumerable non génériques si votre composant sera utilisé par JavaScript.Caution Avoid using the non-generic IList and IEnumerable interfaces if your component will be used by JavaScript. Ces interfaces mappent vers IBindableVector et IBindableIterator, respectivement.These interfaces map to IBindableVector and IBindableIterator, respectively. Elles prennent en charge la liaison pour les contrôles XAML et sont invisibles dans JavaScript.They support binding for XAML controls, and are invisible to JavaScript. JavaScript émet l’erreur d’exécution « La fonction “X” a une signature non valide et ne peut pas être appelée ».JavaScript issues the run-time error "The function 'X' has an invalid signature and cannot be called."

 

Numéro d'erreurError number Texte du messageMessage Text
WME1033WME1033 La méthode' {0} 'a le paramètre' ' {1} de type' {2} '.Method '{0}' has parameter '{1}' of type '{2}'. « {2} » n’est pas un type de paramètre Windows Runtime valide.'{2}' is not a valid Windows Runtime parameter type.
WME1038WME1038 La méthode' {0} 'a un paramètre de type' {1} 'dans sa signature.Method '{0}' has a parameter of type '{1}' in its signature. Bien que ce type ne soit pas un type Windows Runtime valide, il implémente les interfaces qui sont des types Windows Runtime valides.Although this type is not a valid Windows Runtime type, it implements interfaces that are valid Windows Runtime types. Modifiez la signature de la méthode pour utiliser l’un des types suivants à la place : « {2} ».Consider changing the method signature to use one of the following types instead: '{2}'.
WME1039WME1039

La méthode' {0} 'a un paramètre de type' {1} 'dans sa signature.Method '{0}' has a parameter of type '{1}' in its signature. Bien que ce type générique ne soit pas un type Windows Runtime valide, ce type ou ses paramètres génériques implémentent les interfaces qui sont des types Windows Runtime valides.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}

> \*\*Remarque** Pour {2} , Winmdexp.exe ajoute une liste d’alternatives, telles que « vous pouvez remplacer le type «System. Collections. Generic. List < T > » dans la signature de méthode par l’un des types suivants à la place : « System. Collections. Generic. IList < t > , System. Collections. Generic. IReadOnlyList < 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 La méthode' {0} 'a un paramètre de type' {1} 'dans sa signature.Method '{0}' has a parameter of type '{1}' in its signature. Au lieu d’utiliser un type de tâche managé, utilisez Windows.Foundation.IAsyncAction, Windows.Foundation.IAsyncOperation ou l’une des autres interfaces asynchrones 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. Le modèle .NET standard await s’applique également à ces interfaces.The standard .NET await pattern also applies to these interfaces. Pour plus d’informations sur la conversion d’objets de tâches managées en interfaces asynchrones Windows Runtime, voir 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.

 

Structures contenant des champs de types non autorisésStructures that contain fields of disallowed types

Dans l’UWP, une structure peut contenir uniquement des champs, et seules les structures peuvent contenir des champs.In the UWP, a structure can contain only fields, and only structures can contain fields. Ces champs doivent être publics.Those fields must be public. Les types de champ valides incluent des énumérations, des structures et des types primitifs.Valid field types include enumerations, structures, and primitive types.

Numéro d'erreurError number Texte du messageMessage Text
WME1060WME1060 La structure' {0} 'a le champ' {1} 'de type' ' {2} .Structure '{0}' has field '{1}' of type '{2}'. « {2} » n’est pas un type de champ Windows Runtime valide.'{2}' is not a valid Windows Runtime field type. Les champs d’une structure Windows Runtime doivent uniquement avoir la valeur UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double, Boolean, String, Enum, ou bien correspondre à une structure.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.

 

Restrictions sur les tableaux dans les signatures de membreRestrictions on arrays in member signatures

Dans l’UWP, les tableaux dans les signatures de membre doivent être unidimensionnels avec une limite inférieure de 0 (zéro).In the UWP, arrays in member signatures must be one-dimensional with a lower bound of 0 (zero). Les types de tableaux imbriqués tels que myArray[][] (myArray()() en Visual Basic) ne sont pas autorisés.Nested array types such as myArray[][] (myArray()() in Visual Basic) are not allowed.

Remarque   Cette restriction ne s’applique pas aux tableaux que vous utilisez en interne dans votre implémentation.Note This restriction does not apply to arrays you use internally in your implementation.

 

Numéro d'erreurError number Texte du messageMessage Text
WME1034WME1034 La méthode' {0} 'a un tableau de type' {1} 'avec une limite inférieure différente de zéro dans sa signature.Method '{0}' has an array of type '{1}' with non-zero lower bound in its signature. Les tableaux dans les signatures de méthode Windows Runtime doivent avoir une limite inférieure de zéro.Arrays in Windows Runtime method signatures must have a lower bound of zero.
WME1035WME1035 La méthode' {0} 'a un tableau multidimensionnel de type' {1} 'dans sa signature.Method '{0}' has a multi-dimensional array of type '{1}' in its signature. Les tableaux dans les signatures de méthode Windows Runtime doivent être unidimensionnels.Arrays in Windows Runtime method signatures must be one dimensional.
WME1036WME1036 La méthode' {0} 'a un tableau imbriqué de type' {1} 'dans sa signature.Method '{0}' has a nested array of type '{1}' in its signature. Les tableaux dans les signatures de méthode Windows Runtime ne peuvent pas être imbriqués.Arrays in Windows Runtime method signatures cannot be nested.

 

Les paramètres de tableau doivent spécifier si le contenu du tableau est accessible en lecture ou en écritureArray parameters must specify whether array contents are readable or writable

Dans l’UWP, les paramètres doivent être en lecture seule ou en écriture seule.In the UWP, parameters must be read-only or write-only. Les paramètres ne peuvent pas être marqués ref (ByRef sans l’attribut OutAttribute en Visual Basic).Parameters cannot be marked ref (ByRef without the OutAttribute attribute in Visual Basic). Cela s’applique au contenu des tableaux ; par conséquent, les paramètres de tableau doivent indiquer si le contenu du tableau est en lecture seule ou en écriture seule.This applies to the contents of arrays, so array parameters must indicate whether the array contents are read-only or write-only. La direction est claire pour les paramètres out (paramètre ByRef avec l’attribut OutAttribute en Visual Basic), mais les paramètres de tableau passés par valeur (ByVal en Visual Basic) doivent être marqués.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. Voir Transmission de tableaux à un composant Windows Runtime.See Passing arrays to a Windows Runtime Component.

Numéro d'erreurError number Texte du messageMessage Text
WME1101WME1101 La méthode' {0} 'a le paramètre' {1} 'qui est un tableau, et qui a à la fois {2} et {3} .Method '{0}' has parameter '{1}' which is an array, and which has both {2} and {3}. Dans le Windows Runtime, les paramètres du tableau de contenu doivent être accessibles en lecture ou en écriture.In the Windows Runtime, the contents array parameters must be either readable or writable. Supprimez l’un des attributs de « {1} ».Please remove one of the attributes from '{1}'.
WME1102WME1102 La méthode' {0} 'a un paramètre de sortie' {1} 'qui est un tableau, mais qui a {2} .Method '{0}' has an output parameter '{1}' which is an array, but which has {2}. Dans le Windows Runtime, le contenu des tableaux de sortie est accessible en écriture.In the Windows Runtime, the contents of output arrays are writable. Supprimez l’attribut de « {1} ».Please remove the attribute from '{1}'.
WME1103WME1103 La méthode' {0} 'a le paramètre' {1} 'qui est un tableau, et qui a un System. Runtime. InteropServices. InAttribute ou System. Runtime. InteropServices. OutAttribute.Method '{0}' has parameter '{1}' which is an array, and which has either a System.Runtime.InteropServices.InAttribute or a System.Runtime.InteropServices.OutAttribute. Dans le Windows Runtime, les paramètres de tableau doivent avoir {2} ou {3}.In the Windows Runtime, array parameters must have either {2} or {3}. Supprimez les attributs suivants ou remplacez-les par l’attribut de Windows Runtime approprié si nécessaire.Please remove these attributes or replace them with the appropriate Windows Runtime attribute if necessary.
WME1104WME1104 La méthode' {0} 'a le paramètre' {1} 'qui n’est pas un tableau et qui a un {2} ou un {3} .Method '{0}' has parameter '{1}' which is not an array, and which has either a {2} or a {3}. Windows Runtime ne prend pas en charge le marquage des paramètres autres que des tableaux associés à {2} ou {3}.Windows Runtime does not support marking non-array parameters with {2} or {3}.
WME1105WME1105 La méthode' {0} 'a le paramètre' {1} 'avec un System. Runtime. InteropServices. InAttribute ou System. Runtime. InteropServices. OutAttribute.Method '{0}' has parameter '{1}' with a System.Runtime.InteropServices.InAttribute or System.Runtime.InteropServices.OutAttribute. Windows Runtime ne prend pas en charge le marquage des paramètres avec l’attribut System.Runtime.InteropServices.InAttribute ou System.Runtime.InteropServices.OutAttribute.Windows Runtime does not support marking parameters with System.Runtime.InteropServices.InAttribute or System.Runtime.InteropServices.OutAttribute. Supprimez System.Runtime.InteropServices.InAttribute et remplacez System.Runtime.InteropServices.OutAttribute par le modificateur « out ».Please consider removing System.Runtime.InteropServices.InAttribute and replace System.Runtime.InteropServices.OutAttribute with 'out' modifier instead. La méthode' {0} 'a le paramètre' {1} 'avec un System. Runtime. InteropServices. InAttribute ou System. Runtime. InteropServices. OutAttribute.Method '{0}' has parameter '{1}' with a System.Runtime.InteropServices.InAttribute or System.Runtime.InteropServices.OutAttribute. Windows Runtime ne prend en charge que le marquage des paramètres ByRef par System.Runtime.InteropServices.OutAttribute, et ne prend en charge aucune autre utilisation de ces attributs.Windows Runtime only supports marking ByRef parameters with System.Runtime.InteropServices.OutAttribute, and does not support other usages of those attributes.
WME1106WME1106 La méthode' {0} 'a le paramètre' {1} 'qui est un tableau.Method '{0}' has parameter '{1}' which is an array. Dans le Windows Runtime, le contenu des paramètres du tableau doit être accessible en lecture ou en écriture.In the Windows Runtime, the contents of array parameters must be either readable or writable. Appliquez {2} ou {3} à « {1} ».Please apply either {2} or {3} to '{1}'.

Membre avec un paramètre nommé « value »Member with a parameter named "value"

Dans l’UWP, les valeurs de retour sont considérées comme des paramètres de sortie, et les noms de ces paramètres doivent être uniques.In the UWP, return values are considered to be output parameters, and the names of parameters must be unique. Par défaut, Winmdexp.exe donne à la valeur de retour le nom « value ».By default, Winmdexp.exe gives the return value the name "value". Si votre méthode possède un paramètre nommé « value », vous obtiendrez l’erreur WME1092.If your method has a parameter named "value", you will get error WME1092. Il existe deux façons de corriger cette situation :There are two ways to correct this:

  • Donnez à votre paramètre un nom différent de « value » (dans les accesseurs de propriété, un nom différent de « returnValue »).Give your parameter a name other than "value" (in property accessors, a name other than "returnValue").

  • Utilisez l’attribut ReturnValueNameAttribute pour modifier le nom de la valeur de retour, comme indiqué ci-après :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
    

Remarque Si vous modifiez le nom de la valeur de retour et que le nouveau nom est en conflit avec le nom d’un autre paramètre, vous obtiendrez l’erreur 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.

Le code JavaScript peut accéder aux paramètres de sortie d’une méthode par nom, notamment la valeur de retour.JavaScript code can access the output parameters of a method by name, including the return value. Pour obtenir un exemple, voir l’attribut ReturnValueNameAttribute.For an example, see the ReturnValueNameAttribute attribute.

Numéro d'erreurError number Texte du messageMessage Text
WME1091WME1091 La méthode « { 0} » a la valeur de retour « { 1} » qui est identique à un nom de paramètre.The method '{0}' has the return value named '{1}' which is the same as a parameter name. Les paramètres de méthode Windows Runtime et la valeur de retour doivent avoir des noms uniques.Windows Runtime method parameters and return value must have unique names.
WME1092WME1092 La méthode « { 0} » a un paramètre nommé « { 1} » qui est identique au nom de la valeur de retour par défaut.The method '{0}' has a parameter named '{1}' which is the same as the default return value name. Fournissez un autre nom pour le paramètre ou utilisez System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute pour spécifier explicitement le nom de la valeur de retour.Consider using another name for the parameter or use the System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute to explicitly specify the name of the return value.

Remarque Le nom par défaut est « returnValue » pour les accesseurs de propriété et « valeur » pour toutes les autres méthodes.Note The default name is "returnValue" for property accessors and "value" for all other methods.