次の方法で共有


プロジェクト クエリ API の概念

Visual Studio では、プロジェクトは実行可能ファイルまたはその他の形式の出力にまとめてコンパイルされるファイルのコレクションであり、ソリューションはプロジェクトのコレクションです。 プロジェクトとソリューションは、それぞれプロジェクト ファイルとソリューション ファイルによってファイルシステムで表されます。 詳しくは、「Visual Studio のソリューションおよびプロジェクト」に関するページを参照してください。

プロジェクト システムは、ディスク上のプロジェクトまたはソリューション ファイル (たとえば、.csproj.vbproj)、ソリューション エクスプローラー、デザイナー、デバッガー、言語サービス、ビルド & デプロイなど、さまざまな Visual Studio 機能の間に配置されます。 プロジェクト システムは Visual Studio コンポーネントの一部であり、ユーザーがプロジェクトを操作して維持したり、ビルドを実行して結果を生成したり、出力をテストしたりするのに役立ちます。また、プロジェクト ファイルに含まれるファイルで発生するほぼすべての対話はプロジェクト システムを介して行われます。 プロジェクト システム の詳細については、こちらを参照してください。

プロジェクト クエリ API の目標は、拡張機能がプロジェクトとソリューションに関するデータを取得して変更できるようにすることです。

プロジェクト クエリで実行できる操作の例をいくつか次に示します。

  • プロジェクト内のソース ファイルを列挙する
  • プロジェクトによって参照されている NuGet パッケージを確認する
  • 特定の機能セットを持つすべてのプロジェクトを検索する
  • 新しいファイルをプロジェクトに追加する
  • プロジェクトのプロパティを変更する

プロジェクト クエリは、さまざまな項目を参照する一連の句です。 詳細と、一般的なタスクのプロジェクト クエリの例については、「プロジェクト クエリの概要」を参照してください。

プロジェクト クエリ 項目の種類

プロジェクト クエリでは、さまざまな項目を参照できます。 一部の項目には、参照可能な子コレクションがあります。 たとえば、WorkSpace には Projects のコレクションが含まれ、それぞれに Files のコレクションが含まれています。

用語 説明
ワークスペース エントリ ポイントを提供する API の最上位ワークスペース。
PropertiesAvailableStatus 結果でプロパティ値を使用できるかどうかをチェックするエントリ ポイント。
QueryableSpace.Projects ワークスペース内のすべてのプロジェクト。
QueryableSpace.Solutions ワークスペース内のすべてのソリューション。
解決策 Visual Studio のソリューションを表します。
プロジェクト Visual Studio のほとんどのプロジェクトを表しますが、ソリューション フォルダーは VisualStudio.Extensibility では異なる方法で表されます。
SolutionFolder ソリューション フォルダーを表します。これは、Visual Studio ソリューション内のプロジェクトとファイルをグループ化するための仮想フォルダーです。
フォルダー プロジェクトに含まれるフォルダーを表します。
ファイル プロジェクトまたはソリューション フォルダーに含まれるファイルを表します。
ExternalFile C++ プロジェクトではまだサポートされていないプロジェクトによって参照される外部ファイルを表します。
プロパティ プロジェクト、構成、またはファイルのプロパティの動的セット (弱い名前/型) を表します。
RuleName プロジェクト構成のルールのセットを表します。
ProjectReference 共有プロジェクト参照を含む、プロジェクト間参照を表します。
PackageReference プロジェクト構成のパッケージ参照 (通常は NuGet パッケージ参照) を表します。
AssemblyReference プロジェクト構成で参照されるアセンブリを表します。
ConfigurationDimensionDefinition プロジェクト構成を宣言する値を表します。
ProjectConfiguration プロジェクト構成を表します。
ConfigurationDimension 1 つのプロジェクト構成の各分析コードの値を表します。
OutputGroup プロジェクト出力の 1 つのコレクションを表します。
出力 1 つの出力グループ内の 1 つの項目を表します。
LaunchProfile プロジェクトで定義されている起動プロファイルを表します。
PropertyPage プロジェクトに表示されるプロパティ ページを表します。
スタートアップ プロジェクト ソリューションで定義されているスタートアップ プロジェクトを表します。

プロジェクト クエリの句の種類

プロジェクト クエリの句は、出力で返す必要がある項目の種類、取得元となるべきコレクション、持つ必要があるプロパティ、および返される項目を変更可能にする必要があるかどうかを決定します。 句は、出力を制限およびフィルター処理するためにも使用されます。

用語 説明
With クエリから返されるプロパティ/コレクションの値を要求します。
WithRequired プロパティ/コレクションの値は、クエリから返される必要があります。
Where 述語に基づいてフィルター処理するクエリ結果を要求します。
Yammer の入手 代わりにクエリ結果の子項目を取得します。
QueryAsync クエリを実行し、結果を IAsyncEnumerable として取得します。
AsQueryable 前に取得したオブジェクトからクエリを開始します。
QueryFrom 以前に取得したオブジェクトのコレクションからクエリを開始します。
AsUpdatable クエリ結果からオブジェクトの更新を開始します。
ExecuteAsync 更新クエリを実行します。

プロジェクト クエリのフィルター処理の種類

フィルターの種類により、クエリ結果の絞り込みとフォーカスが容易になります。 以下に示す特定のフィルター処理の種類は、すべてのクエリ アイテムで使用できない場合があることに注意してください。

用語 説明
ConfigurationsByName クエリ結果を特定の構成名にフィルター処理します。
FilesByPath クエリ結果を特定のファイル パスにフィルター処理します。
OutputGroupsByName クエリ結果を特定の出力グループ名にフィルター処理します。
ProjectsByCapabilities クエリを特定のプロジェクト機能にフィルター処理します。
ProjectsByPath クエリ結果を特定のプロジェクト パスにフィルター処理します。
ProjectsByProjectGuid クエリ結果を特定のプロジェクト GUID にフィルター処理します。
RuleResultsByRuleName クエリを特定のルール名にフィルター処理します。
Skip スキップして、限られた数の項目に対してクエリ結果を実行します。

プロジェクト クエリのアクション タイプ

プロジェクト クエリのアクションによって、プロジェクト システムに対して行われる変更が決まります。 各クエリ アイテムの種類には、独自のアクションが使用できる点に注意してください。 アクション クエリの簡単な一覧を次に示します。

用語 説明
AddAssemblyReference アセンブリ参照をプロジェクトに追加する操作を表します。
AddConfigurationDimensionValue 構成分析コード (構成やプラットフォームなど) に新しい値を追加します。
AddFiles 既存のファイルをプロジェクトに追加する操作を表します。
AddLaunchProfile 新しい起動プロファイルをプロジェクトに追加する操作を表します。
AddPackageReference パッケージ参照をプロジェクトに追加する操作を表します。
AddProjectReference プロジェクトからプロジェクトの参照をプロジェクトに追加する操作を表します。
AddProject プロジェクトをソリューションまたはソリューション フォルダーに追加する操作を表します。
AddProjectReferenceByPath プロジェクトからプロジェクトの参照をプロジェクトのパスに追加する操作を表します。
AddSolutionConfiguration ソリューション構成を追加する操作を表します。
ビルド ソリューションをビルドする操作を表します。
Clean ソリューションをクリーンアップする操作を表します。
ConfigurationDimensionValue 構成の分析コード値を設定する操作を表します。
CreateFile 新しいファイルをプロジェクトに作成する操作を表します。
CreateFolder フォルダーをプロジェクトに作成する操作を表します。
CreateSolutionFolder ソリューション フォルダーをソリューションまたは既存のソリューション フォルダーに追加する操作を表します。
デバッグ ソリューションをデバッグする操作を表します。
DeleteConfigurationDimensionValue 構成分析コード (構成やプラットフォームなど) の値を削除します。
削除 プロジェクトを削除する操作を表します。
DeleteSolutionConfiguration ソリューション構成を削除する操作を表します。
展開 ソリューションをデプロイする操作を表します。
DuplicateLaunchProfile 既存の起動プロファイルを複製する操作を表します。
含めない プロジェクトを除外する操作を表します。
リビルド ソリューションをリビルドする操作を表します。
ReloadProject プロジェクトをリロードする操作を表します。
RemoveLaunchProfile 起動プロファイルをプロジェクトから削除する操作を表します。
RenameFile プロジェクトのファイル名を変更する操作を表します。
RenameFolder プロジェクトのフォルダ名を変更する操作を表します。
RenameSolutionFolder ソリューション フォルダーの名前を変更する操作を表します。
RenameProject プロジェクト名を変更する操作を表します。
[ファイル名を指定して実行] ソリューションを実行する操作を表します。
RunCustomTool カスタム ツールを実行する操作を表します。
および プロジェクトを保存する操作を表します。
SetPropertyValue プロパティ値を設定する操作を表します。
SetCopyToLocal プロジェクト参照の CopyToLocal の値を設定する操作を表します。
SetBuildProperty プロジェクト構成ビルド プロパティの値を設定する操作を表します。
SetEvaluatedUIPropertyValue ユーザーに表示されるプロパティの評価値を設定する操作を表します。
SetLaunchProfilePropertyValue 起動プロファイルを通じて公開されるプロパティの値を設定する操作を表します。
SetPackageReferenceVersion ソリューション フォルダーの名前を変更する操作を表します。
SetSolutionFolderName ソリューション フォルダーの名前を設定する操作を表します。
SetStartupProjects スタートアップ プロジェクトを設定する操作を表します。
SetUnevaluatedUIPropertyValue ユーザーに表示されるプロパティの未評価の値を設定する操作を表します。
UnloadProject プロジェクトをアンロードする操作を表します。
WaitIntellisenseReady プロジェクトまたはソリューションの IntelliSense 操作の進行状況の準備を待機する操作を表します。

プロジェクト クエリの更新の種類

これらのクエリは、クエリ結果に対して行われた更新の監視をサポートします。

用語 説明
TrackUpdatesAsync クエリの変更を追跡する操作を表します。

一般的なタスクのプロジェクト クエリの例については、「プロジェクト クエリの概要」を参照してください

プロジェクト クエリ API を使用するサンプルの拡張機能については、「プロジェクト クエリのサンプル」を参照してください。