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