注
コミュニティの関心グループが Yammer から Microsoft Viva Engage に移行されました。 Viva Engage コミュニティに参加し、最新のディスカッションに参加するには、「 Finance and Operations Viva Engage Community へのアクセスを要求する 」フォームに入力し、参加するコミュニティを選択します。
この記事では、メタデータ検索を使用して、コードとメタデータで任意のパターンとコンテンツを検索する方法について説明します。
大量のコード ベースとメタデータを考えると、多くの場合、特定の条件を満たすものをコード内で見つける必要があります。 たとえば、パターンを含む、または基準を満たしているメタデータ要素の名前が分からない場合があります。 Visual Studio では、メタデータ検索ツール ウィンドウと [移動 ] ウィンドウの 2 つのユーザー インターフェイスを使用してメタデータ検索を公開します。
メタデータ検索ツール ウィンドウ
[メタデータ検索] ツール ウィンドウには 、Dynamics 365>Metadata Search メニュー コマンドからアクセスできます。 検索クエリを入力して検索を開始します。 入力すると、ウィンドウに非同期的に結果の入力が開始されます。 任意の結果行をダブルクリックして、検索クエリに一致する対応する X++ コードまたはメタデータに移動できます。
また、1 つまたは複数の結果を選択して、右クリックし、これらの要素をプロジェクトに追加することができます。 検索結果の操作を開始する前に、検索が完了するのを待つ必要はありません。
ナビゲート ウィンドウ
Ctrl + ',' (コンマ文字) のショートカットキーを押して、ナビゲート先ウィンドウを起動します。 Ctrl+‘,’ キーを押すと、Visual Studio の主要なドキュメント ウィンドウの右上隅にクエリ エントリ ボックスが表示されます。 また、Visual Studio の 編集 メニューから 移動先 ウィンドウにアクセスすることができます。 検索クエリを入力し、入力すると結果が表示されます。 検索が完了すると、進行状況インジケーターが停止します。 検索が完了するまで待って結果の操作を開始する必要はありません。
クエリ構文を検索
ここでは、検索クエリの構文について説明し、クエリの例を示します。
構文
検索クエリは、この一般的なフォームの一連のフィルターで構成される検索文字列です。
<filter_1>:<filter_1_value> [<filter_2>:<filter_2_value> … [ <filter_N>:<filter_N\_value>]]
ここで、 <filter_i> は許容されるフィルター名の 1 つであり、 <filter_i_value> はコンマ区切り (および場合によっては引用符で囲まれた) フィルター値です。
フィルター名
名前: 要素名ごとのフィルター処理。 これは既定のフィルターであるため、フィルター値を入力するだけで、要素名と見なされます。 各コンマ区切り値は、許容可能な要素名です。
タイプ: 要素タイプでフィルター処理してください。 コンマ区切りの各値は、テーブル、クラス、フィールドなどの要素またはサブ要素型 (ルート型またはサブタイプ) の名前にする必要があります。 フィルター処理のロジックは次のとおりです。
(roottype_1 OR roottype_2 OR … OR roottype_N) AND (subtype_1 OR subtype_2 OR … OR subtype_N)モデル: モデル名ごとのフィルター。 各コンマ区切り値は、アプリケーションのモデル名にする必要があります。
プロパティ: プロパティ フィルターを適用します。 各コンマ区切り値は、フォーム
property_name=property_valueに含まれている必要があります。コード: コード スニペットを使用してフィルター処理します。 コード スニペットを囲む引用符を使用します。 一致するソース コードは、指定されたコード スニペットを含む要素です。
検索ボックスで使用できるドロップダウン メニューを開くと、フィルターとフィルター構文の使用に関するヘルプが表示されます。
例
| クエリ文字列 | その機能 |
|---|---|
TrvExpTable |
トークンが単独である場合は、それは名前と見なされます。 したがって、名前に 「TrvExpTable」 を持つアプリケーションのすべてのものが検出されます。 |
type:form ccount |
その名前に 「ccount」 を持つすべてのフォームを検索します。 |
type:form property:formtemplate=listpage |
ListPageと等しいプロパティ "FormTemplate" を含むすべてのフォームを検索します。 |
type:table,formDesign property:"WorkflowDataSource=TrvExpTable" |
テーブルの下にある formDesign ノードを検索しますが、何も見つかりません。 |
type:form,formmenufunctionbuttoncontrol property:Text=@SYS311998 |
Text プロパティが (ラベル) @SYS311998と等しいすべてのメニュー関数ボタン コントロールを検索します。 |
type:table,method name:insert |
メソッドの名前に 「insert」 を含むメソッドで、テーブルを検索します。 |
type:table,tableindex name:Export |
「Export」 の単語を含むインデックス名で、テーブルを検索します。 |
type:table,tableindexfield name:xpNum |
インデックス フィールド名の 「xpNum」 で、テーブル インデックスを検索します。 |
type:table,tablefieldgroup name:EPNew |
名前に EPNew を含む FieldGroups (テーブル内) を検索します。 |
type:form,formgridcontrol property:allowedit=no,heightmode=column |
プロパティ allowedit が no 、heightmode が column と等しいフォーム グリッド コントロールを検索します。 |
type:form,formtabcontrol property:arrangeMethod=Vertical,ViewEditMode=view,WidthMode=Auto |
プロパティ arrangeMethod が Vertical 、ViewEditMode が view 、WidthMode が Auto と等しいフォーム タブ コントロールを検索します。 |
type:form,formDesign property:"WorkflowDataSource=TrvExpTable" |
FormDesign ノードの "WorkflowDataSource" プロパティが TrvExpTable値に設定されているすべてのフォームを検索します。 |
model:”Application Suite” type:formdesign property:style=simplelistdetail |
FormDesign ノードで simpleListDetail に設定するスタイル プロパティを持つ、アプリケーション スイート モデル内のすべてのフォームを検索します。 |
code:"return null" |
「null を返す」を含むソース コード内で、すべての場所を検索します。 |
code:"element.lock()" type:form |
スニペット 「element.lock()」 を含むソース コードのフォームで、すべての場所を検索します。 |
code:"insert" type:table,form |
「挿入」を含むフォームまたはテーブルのいずれかのソース コード内で、すべての場所を検索します。 |
code:"public display" type:form,method |
「公開表示」のコードを含む、すべてのフォーム メソッドを検索します。 |
type:formbuttoncontrol property:text= |
空テキスト プロパティを持つ、すべてのフォームのボタン コントロールを検索します。 |