Conceptos de la API de consulta del proyecto

En Visual Studio, los proyectos son colecciones de archivos que se compilan juntos en un archivo ejecutable o en alguna otra forma de salida, y las soluciones son colecciones de proyectos. Los proyectos y soluciones se representan en el sistema de archivos mediante archivos de proyecto y archivos de solución, respectivamente. Para obtener más información, vea ¿Qué son las soluciones y los proyectos en Visual Studio?.

El sistema de proyectos se encuentra entre un proyecto o un archivo de solución en el disco (por ejemplo, .csproj y .vbproj) y varias características de Visual Studio, entre las que se incluyen, entre otros, los Explorador de soluciones, los diseñadores, el depurador, los servicios de lenguaje, la compilación y la implementación. Los sistemas de proyecto forman parte de los componentes de Visual Studio para ayudar a los usuarios a trabajar con proyectos y mantenerlos, ejecutar compilaciones para generar resultados y probar la salida, y casi todas las interacciones que se producen con archivos contenidos en un archivo de proyecto se producen a través del sistema de proyectos. Puede encontrar más información sobre los sistemas de proyecto aquí.

El objetivo de la API de consulta del proyecto es habilitar extensiones para recuperar datos sobre proyectos y soluciones y realizar cambios.

Algunos ejemplos de lo que podría hacer con una consulta de proyecto:

  • Enumerar los archivos de origen de un proyecto
  • Comprobación de los paquetes NuGet a los que hace referencia un proyecto
  • Buscar todos los proyectos que tienen un conjunto determinado de funcionalidades
  • Agregar nuevos archivos a un proyecto
  • Modificar las propiedades de un proyecto

Una consulta de proyecto es una serie de cláusulas que hacen referencia a varios elementos. Consulte Información general sobre consultas de proyecto para obtener más información y ejemplos de consultas de proyecto para tareas comunes.

Tipos de elementos de consulta de proyecto

Hay muchos elementos diferentes a los que puede hacer referencia en las consultas del proyecto. Algunos elementos tienen colecciones secundarias o secundarias a las que también se puede hacer referencia. Por ejemplo, un WorkSpace objeto contiene una colección de Projects, cada una de las cuales contiene una colección de Files.

Término Descripción
Trabajo Área de trabajo de nivel superior de la API para proporcionar el punto de entrada.
PropiedadesAvailableStatus Punto de entrada para comprobar si un valor de propiedad está disponible en el resultado.
QueryableSpace.Projects Todos los proyectos del área de trabajo.
QueryableSpace.Solutions Todas las soluciones del área de trabajo.
Solución Representa una solución en Visual Studio.
Proyecto Representa la mayoría de los proyectos de Visual Studio, pero las carpetas de soluciones se representan de forma diferente en VisualStudio.Extensibility.
SolutionFolder Representa una carpeta de solución, que es una carpeta virtual para agrupar proyectos y archivos dentro de una solución de Visual Studio.
Carpeta Representa una carpeta contenida por un proyecto.
Archivo Representa un archivo contenido en un proyecto o una carpeta de solución.
ExternalFile Representa los archivos externos a los que hace referencia un proyecto, que aún no es compatible con los proyectos de C++.
Propiedad Representa un conjunto dinámico (nombre o tipo débil) de propiedades de un proyecto, una configuración o un archivo.
ProjectReference Representa referencias de proyecto a proyecto, incluidas las referencias de proyecto compartidas.
PackageReference Representa una referencia de paquete en una configuración de proyecto, normalmente una referencia de paquete NuGet.
AssemblyReference Representa un ensamblado al que se hace referencia en una configuración del proyecto.
ConfigurationDimensionDefinition Representa valores para declarar configuraciones de proyecto.
Projectconfiguration Representa una configuración de proyecto.
ConfigurationDimension Representa los valores de cada dimensión de una sola configuración de proyecto.
OutputGroup Representa una colección de resultados del proyecto.
Output Representa un elemento dentro de un único grupo de salida.
LaunchProfile Representa los perfiles de inicio definidos en un proyecto.
PropertyPage Representa las páginas de propiedades que se muestran para el proyecto.
Proyectos de inicio Representa los proyectos de inicio definidos en la solución.

Tipos de cláusulas de consulta de proyecto

Las cláusulas de la consulta del proyecto determinan de qué tipo de elementos se deben devolver en la salida, qué colección deben provenir, qué propiedades deben tener y si los elementos devueltos deben ser mutables. Las cláusulas también se usan para limitar y filtrar la salida.

Término Descripción
With Solicita el valor de una propiedad o colección que se va a devolver de la consulta.
WithRequired El valor de las solicitudes de una propiedad o colección debe devolverse desde la consulta.
Where Solicita que el resultado de la consulta se filtre en función de un predicado.
Obtener Obtiene elementos secundarios en su lugar en el resultado de la consulta.
QueryAsync Ejecuta una consulta y recupera el resultado como IAsyncEnumerable.
AsQueryable Inicia una consulta de un objeto recuperado anterior.
QueryFrom Inicia una consulta de una colección de objetos recuperados anteriores.
AsUpdatable Comienza a actualizar el objeto a partir de un resultado de consulta.
ExecuteAsync Ejecuta una consulta de actualización.

Tipos de acción de consulta de proyecto

Las acciones de la consulta del proyecto determinan qué modificaciones se realizan en el sistema del proyecto. Tenga en cuenta que cada tipo de elemento de consulta tiene sus propias acciones disponibles. A continuación se muestra una lista sencilla de consultas de acción.

Término Descripción
AddAssemblyReference Representa la operación para agregar una referencia de ensamblado a un proyecto.
AddConfigurationDimensionValue Agrega un nuevo valor a una dimensión de configuración (por ejemplo, Configuración o Plataforma).
AddFiles Representa la operación para agregar un archivo existente al proyecto.
AddLaunchProfile Representa la operación para agregar un nuevo perfil de inicio a un proyecto.
AddPackageReference Representa la operación para agregar una referencia de paquete a un proyecto.
AddProjectReference Representa la operación para agregar un proyecto a una referencia de proyecto a un proyecto.
AddProject Representa la operación para agregar un proyecto a una solución o una carpeta de solución.
AddProjectReferenceByPath Representa la operación para agregar un proyecto a la referencia del proyecto a la ruta de acceso de un proyecto.
AddSolutionConfiguration Representa la operación para agregar una configuración de solución.
Build Representa la operación para compilar una solución.
Clean Representa la operación para limpiar una solución.
ConfigurationDimensionValue Representa la operación para establecer el valor de dimensión de una configuración.
CreateFile Representa la operación para crear un nuevo archivo en un proyecto.
CreateFolder Representa la operación para crear una carpeta en un proyecto.
CreateSolutionFolder Representa la operación para agregar una carpeta de solución a una solución o una carpeta de solución existente.
Depurar Representa la operación para depurar una solución.
DeleteConfigurationDimensionValue Elimina un valor de la dimensión de configuración (por ejemplo, Configuración o Plataforma).
Eliminar Representa la operación para eliminar un proyecto.
DeleteSolutionConfiguration Representa la operación para quitar una configuración de solución.
Implementar Representa la operación para implementar una solución.
DuplicateLaunchProfile Representa la operación para duplicar un perfil de inicio existente.
Exclude Representa la operación para excluir un proyecto.
Volver a generar Representa la operación para recompilar una solución.
ReloadProject Representa la operación para volver a cargar un proyecto.
RemoveLaunchProfile Representa la operación para quitar un perfil de inicio de un proyecto.
RenameFile Representa la operación para cambiar el nombre de un archivo en un proyecto.
RenameFolder Representa la operación para cambiar el nombre de una carpeta de un proyecto.
RenameSolutionFolder Representa la operación para cambiar el nombre de una carpeta de solución.
RenameProject Representa la operación para cambiar el nombre de un proyecto.
Ejecutar Representa la operación para ejecutar una solución.
RunCustomTool Representa la operación para ejecutar una herramienta personalizada.
Guardar Representa la operación para guardar un proyecto.
SetPropertyValue Representa la operación para establecer un valor de propiedad.
SetCopyToLocal Representa la operación de establecer el valor de CopyToLocal para una referencia de proyecto.
SetBuildProperty Representa la operación de establecer el valor de una propiedad de compilación de configuración del proyecto.
SetEvaluatedUIPropertyValue Representa la operación para establecer el valor evaluado de una propiedad visible para el usuario.
SetLaunchProfilePropertyValue Representa la operación de establecer el valor de una propiedad expuesta a través del perfil de inicio.
SetPackageReferenceVersion Representa la operación para cambiar el nombre de una carpeta de solución.
SetSolutionFolderName Representa la operación para establecer un nombre de carpeta de solución.
SetStartupProjects Representa la operación para establecer un proyecto de inicio.
SetUnevaluatedUIPropertyValue Representa la operación para establecer el valor no evaluado de una propiedad visible para el usuario.
DescargarProyecto Representa la operación para descargar un proyecto.
WaitIntellisenseReady Representa la operación para esperar el progreso de la operación de intelliSense del proyecto o de la solución para que esté listo.

Para ver algunos ejemplos de consultas de proyecto para tareas comunes, consulte Información general sobre consultas de proyecto.

Para obtener una extensión de ejemplo que use la API de consulta de proyecto, consulte Ejemplo de consulta de proyecto.