Windows ランタイム コンポーネントでのエラー状態の診断Diagnosing Windows Runtime Component error conditions

この記事では、マネージコードで記述された Windows ランタイムコンポーネントの制限に関する追加情報を提供します。This article provides additional information about restrictions on Windows Runtime components written with managed code. また、 Winmdexp.exe (Windows ランタイムメタデータエクスポートツール)のエラーメッセージで提供される情報を拡張し、 C# および Visual Basic で Windows ランタイムコンポーネントで提供される制限についての情報を補完します。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.

この記事では、すべてのエラーが説明されているわけではありません。This article doesn’t cover all errors. ここで説明するエラーは一般的なカテゴリにまとめられており、各カテゴリには、関連するエラー メッセージの表が示されています。The errors discussed here are grouped by general category, and each category includes a table of associated error messages. この表を利用するには、メッセージ テキストで検索するか (プレース ホルダーの特定の値は省略してください)、メッセージ番号で検索してください。Search for message text (omitting specific values for placeholders) or for message number. 必要な情報が見つからない場合は、この記事の最後にあるフィードバック ボタンをご利用ください。ドキュメントの内容を充実させるためにご協力をお願いします。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. フィードバックを送る際には、エラー メッセージを含めてください。Include the error message. また、Microsoft Connect の Web サイトで問題点をご連絡していただくこともできます。Alternatively, you can file a bug at the Microsoft Connect website.

非同期インターフェイスの実装に関するエラー メッセージで示される型が正しくないError message for implementing async interface provides incorrect type

マネージ Windows ランタイムコンポーネントでは、非同期アクションまたは操作 (iasyncactioniasyncactionwithprogress < tprogress > IAsyncOperation < > tresult、またはIAsyncOperationWithProgress < tresult、tprogress > ) を表すユニバーサル Windows プラットフォーム (UWP) インターフェイスを実装することはできません。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>). 代わりに、.NET には、Windows ランタイムコンポーネントで非同期操作を生成するための Asyncinfo クラスが用意されています。Instead, .NET provides the AsyncInfo class for generating async operations in Windows Runtime components. 非同期インターフェイスを実装しようとしたときに Winmdexp.exe により表示されるエラー メッセージでは、このクラスが誤って以前の名前の 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 には、AsyncInfoFactory クラスが含まれなくなりました。.NET no longer includes the AsyncInfoFactory class.

エラー番号Error number メッセージ テキストMessage Text
WME1084WME1084 型 ' {0} ' は Windows ランタイム非同期インターフェイス ' {1} ' を実装しています。Type '{0}' implements Windows Runtime async interface '{1}'. Windows ランタイム型は、非同期インターフェイスを実装できません。Windows Runtime types cannot implement async interfaces. System.Runtime.InteropServices.WindowsRuntime.AsyncInfoFactory クラスを使用して、Windows ランタイムへのエクスポート用に非同期操作を生成してください。Please use the System.Runtime.InteropServices.WindowsRuntime.AsyncInfoFactory class to generate async operations for export to Windows Runtime.

メモ  Windows ランタイムを参照するエラーメッセージでは、古い用語が使用されます。Note The error messages that refer to the Windows Runtime use an old terminology. 現在では、Windows ランタイムはユニバーサル Windows プラットフォーム (UWP) と呼ばれます。This is now referred to as the Universal Windows Platform (UWP). たとえば、Windows ランタイム型は UWP 型と呼ばれています。For example, Windows Runtime types are now called UWP types.

mscorlib.dll または System.Runtime.dll への参照が指定されていないMissing references to mscorlib.dll or System.Runtime.dll

この問題は、コマンド ラインから Winmdexp.exe を使う場合にのみ発生します。This issue occurs only when you use Winmdexp.exe from the command line. /Reference オプションを使用して、mscorlib.dll と System.Runtime.dll の両方への参照を .NET Framework コア参照アセンブリから含めることをお勧めします。このアセンブリは、"% ProgramFiles (x86)% \ Reference assemblies \ Microsoft Framework にあり \ \ ます。NETCore \ v 4.5 "("% ProgramFiles% \ ... "32ビットコンピューターの場合)。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).

エラー番号Error number メッセージ テキストMessage Text
WME1009WME1009 mscorlib.dll は参照されませんでした。No reference was made to mscorlib.dll. 正しくエクスポートするには、このメタデータ ファイルへの参照が必要です。A reference to this metadata file is required in order to export correctly.
WME1090WME1090 コア参照アセンブリを確認できませんでした。Could not determine the core reference assembly. /reference スイッチを使用して mscorlib.dll および System.Runtime.dll が参照されていることを確認してください。Please make sure mscorlib.dll and System.Runtime.dll is referenced using the /reference switch.

演算子のオーバーロードが許可されていないOperator overloading is not allowed

マネージ コードで記述された Windows ランタイム コンポーネントでは、パブリック型のオーバーロードされた演算子を公開することはできません。In a Windows Runtime Component written in managed code, you cannot expose overloaded operators on public types.

メモ  エラーメッセージでは、演算子は、op _ 加算、op _ 乗算、op _ ExclusiveOr、op _ 暗黙 (暗黙の変換) などのメタデータ名によって識別されます。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.

エラー番号Error number メッセージ テキストMessage Text
WME1087WME1087 ' {0} ' は演算子のオーバーロードです。'{0}' is an operator overload. マネージ型は、Windows ランタイムで演算子オーバーロードを公開できません。Managed types cannot expose operator overloads in the Windows Runtime.

クラスのコンストラクターに同じ数のパラメーターがあるConstructors on a class have the same number of parameters

UWP のクラスは、指定された数のパラメーターを持つコンストラクターを 1 つしか保持できません。たとえば、String 型の 1 つのパラメーターを持つコンストラクターと int 型 (Visual Basic の Integer) の 1 つのパラメーターを持つコンストラクターを両方保持することはできません。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). 唯一の回避策は、各コンストラクターで異なる数のパラメーターを使うことです。The only workaround is to use a different number of parameters for each constructor.

エラー番号Error number メッセージ テキストMessage Text
WME1099WME1099 型 ' {0} ' には、' ' 個の引数を持つ複数のコンストラクターがあり {1} ます。Type '{0}' has multiple constructors with '{1}' argument(s). Windows ランタイム型には、同じ数の引数を持つ複数のコンストラクターがありません。Windows Runtime types cannot have multiple constructors with the same number of arguments.

同じ数のパラメーターを持つオーバーロードには既定値を指定する必要があるMust specify a default for overloads that have the same number of parameters

UWP では、オーバーロードされたメソッドの 1 つが既定のオーバーロードとして指定されている場合にのみ、同じ数のパラメーターを持つことができます。In the UWP, overloaded methods can have the same number of parameters only if one overload is specified as the default overload. C# および Visual Basic を使用した Windows ランタイムコンポーネント」の「オーバーロードされたメソッド」を参照してください。See "Overloaded Methods" in Windows Runtime components with C# and Visual Basic.

エラー番号Error number メッセージ テキストMessage Text
WME1059WME1059 {0}'. ' の複数パラメーターのオーバーロード {1} {2} は、windows.foundation.metadata.defaultoverloadattribute で修飾されています。Multiple {0}-parameter overloads of '{1}.{2}' are decorated with Windows.Foundation.Metadata.DefaultOverloadAttribute.
WME1085WME1085 {0}のパラメーターオーバーロードは、 {1} {2} windows.foundation.metadata.defaultoverloadattribute で修飾することによって、既定のオーバーロードとして指定されたメソッドを1つだけ持つ必要があります。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.

出力ファイルの名前空間のエラーと無効な名前Namespace errors and invalid names for the output file

ユニバーサル Windows プラットフォームでは、Windows メタデータ (.winmd) ファイルに含まれるすべてのパブリック型は、.winmd ファイルの名前を共有する名前空間、またはそのファイル名のサブ名前空間に含まれている必要があります。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. たとえば、Visual Studio プロジェクトの名前が A.B (つまり、Windows ランタイム コンポーネントが A.B.winmd) の場合、パブリック クラス A.B.Class1 と A.B.C.Class2 を含めることができますが、A.Class3 (WME0006) または 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).

注: これらの制限はパブリック型だけに適用され、実装で使われるプライベート型には適用されません。Note These restrictions apply only to public types, not to private types used in your implementation.

A.Class3 の場合、Class3 を別の名前空間に移動するか、Windows ランタイム コンポーネントの名前を 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. WME0006 は警告ですが、エラーとして扱う必要があります。Although WME0006 is a warning, you should treat it as an error. 前の例では、A.B.winmd を呼び出すコードは A.Class3 を特定することはできません。In the previous example, code that calls A.B.winmd will be unable to locate A.Class3.

D.Class4 の場合、ファイル名には D.Class4 と A.B 名前空間内のクラスの両方を含めることはできないため、Windows ランタイム コンポーネントの名前を変更することはできません。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. D.Class4 を別の名前空間に移動するか、別の Windows ランタイム コンポーネントに配置できます。You can either move D.Class4 to another namespace, or put it in another Windows Runtime Component.

ファイル システムは大文字と小文字を区別できないため、同じ名前で大文字と小文字だけが異なる名前空間は許可されません (WME1067)。The file system can't distinguish between uppercase and lowercase, so namespaces that differ by case are not allowed (WME1067).

コンポーネントには、少なくとも 1 つの public sealed 型 (Visual Basic の Public NotInheritable) を含める必要があります。Your component must contain at least one public sealed type (Public NotInheritable in Visual Basic). 含めない場合、コンポーネントにプライベート型が含まれるかどうかに応じて、WME1042 または WME1043 を受け取ります。If not, you will get WME1042 or WME1043, depending on whether your component contains private types.

Windows ランタイム コンポーネントの型には、名前空間と同じ名前を付けることはできません (WME1068)。A type in a Windows Runtime Component cannot have a name that is the same as a namespace (WME1068).

注意 Winmdexp.exe を直接呼び出し、Windows ランタイム コンポーネントの名前を指定する /out オプションを指定しなかった場合、Winmdexp.exe は、コンポーネント内のすべての名前空間を含めた名前を生成しようとします。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. 名前空間の名前を変更すると、コンポーネントの名前も変更される場合があります。Renaming namespaces can change the name of your component.

 

エラー番号Error number メッセージ テキストMessage Text
WME0006WME0006 ' {0} ' は、このアセンブリの有効な winmd ファイル名ではありません。'{0}' is not a valid winmd file name for this assembly. Windows メタデータ ファイル内のすべての型は、ファイル名で指定される名前空間のサブ名前空間に存在する必要があります。All types within a Windows Metadata file must exist in a sub namespace of the namespace that is implied by the file name. このようなサブ名前空間に存在しない型は、ランタイムに見つかりません。Types that do not exist in such a sub namespace cannot be located at runtime. このアセンブリでは、ファイル名として使用できる最も小さい共通の名前空間は '{1}' です。In this assembly, the smallest common namespace that could serve as a filename is '{1}'.
WME1042WME1042 入力モジュールには、名前空間内にある少なくとも 1 つのパブリック型を含める必要があります。Input module must contain at least one public type that is located inside a namespace.
WME1043WME1043 入力モジュールには、名前空間内にある少なくとも 1 つのパブリック型を含める必要があります。Input module must contain at least one public type that is located inside a namespace. 名前空間内で検出された型はプライベートのみです。The only types found inside namespaces are private.
WME1044WME1044 パブリック型には、 {1} 他の名前空間 (' ') と共通プレフィックスを共有しない名前空間 (' ') があり {0} ます。A public type has a namespace ('{1}') that shares no common prefix with other namespaces ('{0}'). Windows メタデータ ファイル内のすべての型は、ファイル名で指定される名前空間のサブ名前空間に存在する必要があります。All types within a Windows Metadata file must exist in a sub namespace of the namespace that is implied by the file name.
WME1067WME1067 名前空間名は、大文字小文字だけを区別しないようにすることができます: ' ' {0} 、' {1} '。Namespace names cannot differ only by case: '{0}', '{1}'.
WME1068WME1068 型 ' {0} ' に名前空間 ' ' と同じ名前を指定することはできません {1} 。Type '{0}' cannot have the same name as namespace '{1}'.

無効なユニバーサル Windows プラットフォーム型である型をエクスポートするExporting types that aren't valid Universal Windows Platform types

コンポーネントのパブリック インターフェイスは UWP 型のみを公開する必要があります。The public interface of your component must expose only UWP types. ただし、.net では、.NET と UWP で若干異なる、よく使用されるさまざまな型のマッピングが提供されます。However, .NET provides mappings for a number of commonly used types that are slightly different in .NET and the UWP. これにより、.NET 開発者は、新しい型を学習するのではなく、使い慣れた型を使用できるようになります。This enables the .NET developer to work with familiar types instead of learning new ones. これらのマップされた .NET 型は、コンポーネントのパブリックインターフェイスで使用できます。You can use these mapped .NET types in the public interface of your component. C# と Visual Basic を使用した Windows ランタイムコンポーネント」および「 Windows ランタイム型の .net マッピング」の「Windows ランタイムコンポーネントでの型の宣言」および「ユニバーサル Windows プラットフォーム型のマネージコードへの引き渡し」を参照してください。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.

これらのマッピングの多くはインターフェイスです。Many of these mappings are interfaces. たとえば、IList<T> は、UWP インターフェイス IVector<T> にマップされます。For example, IList<T> maps to the UWP interface IVector<T>. パラメーター型として IList<string> の代わりに List<string> (Visual Basic の List(Of String)) を使うと、Winmdexp.exe によって代替のインターフェイスのリストが提供されます。このリストには、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>. List<Dictionary<int, string>> (Visual Basic の List(Of Dictionary(Of Integer, String))) など、入れ子になったジェネリック型を使う場合、Winmdexp.exe によって入れ子のレベルごとに選択肢のリストが提供されます。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. これらのリストはかなり長くなる場合があります。These lists can become quite long.

一般に、最適なのは型に最も近いインターフェイスです。In general, the best choice is the interface that is closest to the type. たとえば、Dictionary<int, string> の場合、IDictionary<int, string> が最適と考えられます。For example, for Dictionary<int, string>, the best choice is most likely IDictionary<int, string>.

重要: JavaScript では、マネージ型が実装するインターフェイスのリストに最初に現れるインターフェイスが使われます。Important JavaScript uses the interface that appears first in the list of interfaces that a managed type implements. たとえば、Dictionary<int, string> を JavaScript コードに返した場合、戻り値の型としてどのインターフェイスを指定しても、IDictionary<int, string> として表示されます。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. つまり、後のインターフェイスにメンバーが最初のインターフェイスに含まれていない場合、そのメンバーは 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.

注意 JavaScript で利用されるコンポーネントでは、非ジェネリックな IList インターフェイスと IEnumerable インターフェイスを使わないでください。Caution Avoid using the non-generic IList and IEnumerable interfaces if your component will be used by JavaScript. これらのインターフェイスは、それぞれ IBindableVectorIBindableIterator にマップされます。These interfaces map to IBindableVector and IBindableIterator, respectively. これらは、XAML コントロールのバインドをサポートし、JavaScript には参照されません。They support binding for XAML controls, and are invisible to JavaScript. JavaScript では、実行時エラー ("関数 'X' に無効なシグネチャがあるため、呼び出せません") が発生します。JavaScript issues the run-time error "The function 'X' has an invalid signature and cannot be called."

 

エラー番号Error number メッセージ テキストMessage Text
WME1033WME1033 メソッド ' {0} ' には型 ' ' のパラメーター ' ' が指定されてい {1} {2} ます。Method '{0}' has parameter '{1}' of type '{2}'. '{2}' は、有効な Windows ランタイム パラメーター型ではありません。'{2}' is not a valid Windows Runtime parameter type.
WME1038WME1038 メソッド ' {0} ' のシグネチャに型 ' ' のパラメーターがあり {1} ます。Method '{0}' has a parameter of type '{1}' in its signature. この型は有効な Windows ランタイム型ではありませんが、有効な Windows ランタイム型であるインターフェイスを実装しています。Although this type is not a valid Windows Runtime type, it implements interfaces that are valid Windows Runtime types. メソッド シグネチャを次のいずれかの型を使用するように変更することを検討してください: '{2}'。Consider changing the method signature to use one of the following types instead: '{2}'.
WME1039WME1039

メソッド ' {0} ' のシグネチャに型 ' ' のパラメーターがあり {1} ます。Method '{0}' has a parameter of type '{1}' in its signature. このジェネリック型は有効な Windows ランタイム型ではありませんが、この型またはそのジェネリック パラメーターは、有効な Windows ランタイム型であるインターフェイスを実装します。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}

> \*\*メモ** では {2} 、Winmdexp.exe 代わりのリストを追加します。たとえば、メソッドシグネチャ内の型 ' system.string. list t ' を、代わりに次のいずれかの型に変更することを検討してください < > : ' < > IReadOnlyList < t, system.string 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 メソッド ' {0} ' のシグネチャに型 ' ' のパラメーターがあり {1} ます。Method '{0}' has a parameter of type '{1}' in its signature. 管理されているタスク型を使用するのではなく、Windows.Foundation.IAsyncAction、Windows.Foundation.IAsyncOperation、またはその他の Windows ランタイムの非同期インターフェイスのいずれかを使用してください。Instead of using a managed Task type, use Windows.Foundation.IAsyncAction, Windows.Foundation.IAsyncOperation, or one of the other Windows Runtime async interfaces. 標準の .NET await パターンもこれらのインターフェイスに適用されます。The standard .NET await pattern also applies to these interfaces. 管理されているタスク オブジェクトを Windows ランタイムの非同期インターフェイスに変換する方法の詳細については、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 that contain fields of disallowed types

UWP では、構造体にはフィールドのみを含めることができ、フィールドは構造体にのみ含めることができます。In the UWP, a structure can contain only fields, and only structures can contain fields. これらのフィールドはパブリック型である必要があります。Those fields must be public. 有効なフィールド型には、列挙体、構造体、およびプリミティブ型があります。Valid field types include enumerations, structures, and primitive types.

エラー番号Error number メッセージ テキストMessage Text
WME1060WME1060 構造体 ' {0} ' には {1} 、型 ' ' のフィールド ' ' が含まれてい {2} ます。Structure '{0}' has field '{1}' of type '{2}'. '{2}' は有効な Windows ランタイム フィールド型ではありません。'{2}' is not a valid Windows Runtime field type. Windows ランタイムの構造体に含まれる各フィールドに指定できるのは、UInt8、Int16、UInt16、Int32、UInt32、Int64、UInt64、Single、Double、Boolean、String、Enum、または構造体自体のみです。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 on arrays in member signatures

UWP では、メンバーのシグネチャ内の配列は 1 次元で、下限を 0 (ゼロ) に指定する必要があります。In the UWP, arrays in member signatures must be one-dimensional with a lower bound of 0 (zero). myArray[][] (Visual Basic の myArray()()) など、入れ子になった配列型を使うことはできません。Nested array types such as myArray[][] (myArray()() in Visual Basic) are not allowed.

メモ  この制限は、実装で内部的に使用する配列には適用されません。Note This restriction does not apply to arrays you use internally in your implementation.

 

エラー番号Error number メッセージ テキストMessage Text
WME1034WME1034 メソッド ' {0} ' には、シグネチャの下限が0以外の型 ' ' の配列が含ま {1} れています。Method '{0}' has an array of type '{1}' with non-zero lower bound in its signature. Windows ランタイム メソッドのシグネチャ内の配列では、下限を 0 に指定する必要があります。Arrays in Windows Runtime method signatures must have a lower bound of zero.
WME1035WME1035 メソッド ' {0} ' のシグネチャには、型 ' ' の多次元配列が含まれてい {1} ます。Method '{0}' has a multi-dimensional array of type '{1}' in its signature. Windows ランタイム メソッドのシグネチャ内の配列は 1 次元配列にする必要があります。Arrays in Windows Runtime method signatures must be one dimensional.
WME1036WME1036 メソッド ' {0} ' のシグネチャには、型 ' ' の入れ子になった配列が含まれてい {1} ます。Method '{0}' has a nested array of type '{1}' in its signature. Windows ランタイム メソッドのシグネチャ内の配列を入れ子にすることはできません。Arrays in Windows Runtime method signatures cannot be nested.

 

配列パラメーターでは、配列の内容が読み取り可能であるか書き込み可能であるかどうかを指定する必要があるArray parameters must specify whether array contents are readable or writable

UWP では、パラメーターは読み取り専用または書き込み専用に指定する必要があります。In the UWP, parameters must be read-only or write-only. パラメーターは、ref (Visual Basic では OutAttribute 属性のない ByRef) とマークすることはできません。Parameters cannot be marked ref (ByRef without the OutAttribute attribute in Visual Basic). これは配列の内容に適用されるため、配列パラメーターは配列の内容が読み取り専用または書き込み専用であるかどうかを示す必要があります。This applies to the contents of arrays, so array parameters must indicate whether the array contents are read-only or write-only. out パラメーター (Visual Basic では OutAttribute 属性のある ByRef パラメーター) の方向は明確ですが、値によって渡される配列パラメーター (Visual Basic の ByVal) はマークする必要があります。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. 「Windows ランタイム コンポーネントに配列を渡す方法」をご覧ください。See Passing arrays to a Windows Runtime Component.

エラー番号Error number メッセージ テキストMessage Text
WME1101WME1101 メソッド ' {0} ' には、 {1} 配列であり、との両方を持つパラメーター ' ' が指定されてい {2} {3} ます。Method '{0}' has parameter '{1}' which is an array, and which has both {2} and {3}. Windows ランタイムでは、配列パラメーターの内容は、読み取り可能または書き込み可能である必要があります。In the Windows Runtime, the contents array parameters must be either readable or writable. 属性の 1 つを '{1}' から削除してください。Please remove one of the attributes from '{1}'.
WME1102WME1102 メソッド ' {0} ' には配列である出力パラメーター ' ' がありますが、これには {1} が含まれてい {2} ます。Method '{0}' has an output parameter '{1}' which is an array, but which has {2}. Windows ランタイムでは、出力配列の内容は書き込み可能です。In the Windows Runtime, the contents of output arrays are writable. '{1}' から属性を削除してください。Please remove the attribute from '{1}'.
WME1103WME1103 メソッド ' {0} ' には、配列であるパラメーター ' ' が含まれています。このパラメーターには、 {1} InteropServices. InAttribute または InteropServices が含まれています。Method '{0}' has parameter '{1}' which is an array, and which has either a System.Runtime.InteropServices.InAttribute or a System.Runtime.InteropServices.OutAttribute. Windows ランタイムでは、配列パラメーターに {2} または {3} を指定する必要があります。In the Windows Runtime, array parameters must have either {2} or {3}. これらの属性を削除するか、必要に応じて、適切な Windows ランタイム属性と置き換えてください。Please remove these attributes or replace them with the appropriate Windows Runtime attribute if necessary.
WME1104WME1104 メソッド ' {0} ' には、 {1} 配列ではなく、またはを含むパラメーター ' ' が指定されてい {2} {3} ます。Method '{0}' has parameter '{1}' which is not an array, and which has either a {2} or a {3}. Windows ランタイムでは、配列でないパラメーターを {2} または {3} でマークすることがサポートされていません。Windows Runtime does not support marking non-array parameters with {2} or {3}.
WME1105WME1105 メソッド ' {0} ' には {1} 、InteropServices または InAttribute のパラメーター ' ' が指定されています。 OutAttribute。Method '{0}' has parameter '{1}' with a System.Runtime.InteropServices.InAttribute or System.Runtime.InteropServices.OutAttribute. Windows ランタイムでは、System.Runtime.InteropServices.InAttribute または System.Runtime.InteropServices.OutAttribute でパラメーターをマークすることはサポートされていません。Windows Runtime does not support marking parameters with System.Runtime.InteropServices.InAttribute or System.Runtime.InteropServices.OutAttribute. System.Runtime.InteropServices.InAttribute を削除して、System.Runtime.InteropServices.OutAttribute を 'out' 修飾子と置き換えることを検討してください。Please consider removing System.Runtime.InteropServices.InAttribute and replace System.Runtime.InteropServices.OutAttribute with 'out' modifier instead. メソッド ' {0} ' には {1} 、InteropServices または InAttribute のパラメーター ' ' が指定されています。 OutAttribute。Method '{0}' has parameter '{1}' with a System.Runtime.InteropServices.InAttribute or System.Runtime.InteropServices.OutAttribute. Windows ランタイムでは、System.Runtime.InteropServices.OutAttribute で ByRef パラメーターをマークすることのみサポートされており、これらの属性の他の使用方法はサポートされていません。Windows Runtime only supports marking ByRef parameters with System.Runtime.InteropServices.OutAttribute, and does not support other usages of those attributes.
WME1106WME1106 メソッド ' {0} ' には {1} 、配列であるパラメーター ' ' が指定されています。Method '{0}' has parameter '{1}' which is an array. Windows ランタイムでは、配列パラメーターの内容が読み取り可能または書き込み可能である必要があります。In the Windows Runtime, the contents of array parameters must be either readable or writable. {2} または {3} を '{1}' に適用してください。Please apply either {2} or {3} to '{1}'.

"value" という名前のパラメーターを持つメンバーMember with a parameter named "value"

UWP では、戻り値は出力パラメーターであると見なされ、パラメーターの名前は一意である必要があります。In the UWP, return values are considered to be output parameters, and the names of parameters must be unique. 既定では、Winmdexp.exe は戻り値に "value" という名前を設定します。By default, Winmdexp.exe gives the return value the name "value". メソッドに "value" という名前のパラメーターがあると、エラー WME1092 が発生します。If your method has a parameter named "value", you will get error WME1092. これを修正するには 2 つの方法があります。There are two ways to correct this:

  • パラメーターに "value" 以外の名前を付けます (プロパティ アクセサーの場合は "returnValue" 以外の名前)。Give your parameter a name other than "value" (in property accessors, a name other than "returnValue").

  • 次に示すように、ReturnValueNameAttribute 属性を使って戻り値の名前を変更します。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
    

注: 戻り値の名前を変更する場合、新しい名前が別のパラメーターの名前と競合すると、エラー 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 コードは、戻り値も含め、メソッドの出力パラメーターに名前でアクセスできます。JavaScript code can access the output parameters of a method by name, including the return value. 例については、ReturnValueNameAttribute 属性に関するトピックをご覧ください。For an example, see the ReturnValueNameAttribute attribute.

エラー番号Error number メッセージ テキストMessage Text
WME1091WME1091 メソッド ' { 0} ' には、 { パラメーター名と同じ ' 1} ' という名前の戻り値があります。The method '{0}' has the return value named '{1}' which is the same as a parameter name. Windows ランタイム メソッドのパラメーターと戻り値には一意の名前を指定する必要があります。Windows Runtime method parameters and return value must have unique names.
WME1092WME1092 メソッド ' { 0} ' には、 { 既定の戻り値の名前と同じ ' 1} ' という名前のパラメーターがあります。The method '{0}' has a parameter named '{1}' which is the same as the default return value name. このパラメーターに別の名前を使用するか、System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute を使用して、戻り値の名前を明示的に指定してください。Consider using another name for the parameter or use the System.Runtime.InteropServices.WindowsRuntime.ReturnValueNameAttribute to explicitly specify the name of the return value.

注: 既定の名前は、プロパティ アクセサーでは "returnValue"、その他のすべてのメソッドでは "value" となります。Note The default name is "returnValue" for property accessors and "value" for all other methods.