Compartir a través de


Anidamiento de archivos en el Explorador de soluciones

Solution Explorer anida los archivos relacionados para ayudarlos a organizarse y facilitar su localización. Por ejemplo, si agrega un formulario de Windows Forms a un proyecto, el archivo de código del formulario se anida debajo del formulario en el Explorador de soluciones. En proyectos de .NET Core (y .NET 5 y versiones posteriores), el anidamiento de archivos puede seguir un paso más allá. Puede elegir entre los valores preestablecidos de anidamiento de archivos Desactivado, Predeterminado y Web. También puede personalizar cómo se anidan los archivos o crear configuraciones específicas de la solución y del proyecto.

Nota:

En Visual Studio 2022, versión 17.2 y versiones anteriores, esta característica solo se admite para proyectos de ASP.NET Core. En la versión 17.3 y posteriores, todos los proyectos dirigidos a .NET admiten el anidamiento de archivos.

Opciones de anidamiento de archivos

Botón para activar o desactivar el anidamiento de archivos

Las opciones disponibles para el anidamiento de archivos no personalizados son:

  • Desactivado: esta opción proporciona una lista plana de archivos sin anidamiento.

  • Valor predeterminado: esta opción proporciona el comportamiento de anidamiento de archivos predeterminado en el Explorador de soluciones. Si no existe ninguna configuración para un tipo de proyecto determinado, no se anida ningún archivo del proyecto. Si existen las configuraciones (por ejemplo, para un proyecto web), se aplica el anidamiento.

  • Web: esta opción aplica el comportamiento de anidamiento de archivos web a todos los proyectos de la solución actual. Tiene numerosas reglas, y le animamos a revisarlo y a decirnos lo que piensa. En la captura de pantalla siguiente se resaltan solo algunos ejemplos del comportamiento de anidamiento de archivos que obtiene con esta opción:

    Anidamiento de archivos en el Explorador de soluciones

Personalizar el anidamiento de archivos

Si no le gusta lo que obtiene de fábrica, puede crear su propia configuración de anidamiento de archivos personalizado que indique al Explorador de soluciones cómo anidar archivos. Puede agregar tantos valores de anidamiento de archivos personalizados como desee y puede cambiar entre ellos según sea necesario. Para crear una nueva configuración personalizada, puede empezar con un archivo vacío o puede usar la configuración web como punto de partida:

Adición de reglas de anidamiento de archivos personalizados

Se recomienda usar la configuración web como punto de partida porque es más fácil trabajar con algo que ya funciona. Si usa la configuración web como punto de partida, el archivo .filenesting.json tiene un aspecto similar al siguiente:

Usar reglas de anidamiento de archivos existentes como base para la configuración personalizada

Vamos a centrarnos en los nodos dependientes deFileProviders y sus nodos secundarios. Cada nodo hijo es un tipo de regla que se puede usar en Visual Studio para anidar archivos. Por ejemplo, tener el mismo nombre de archivo, pero una extensión diferente es un tipo de regla. Las reglas disponibles son:

  • extensionToExtension: use este tipo de regla para anidar file.js en file.ts

  • fileSuffixToExtension: Use este tipo de regla para anidar file-vsdoc.js en file.js

  • addedExtension: Use este tipo de regla para anidar file.html.css en file.html

  • pathSegment: Use este tipo de regla para anidar jquery.min.js bajo jquery.js

  • allExtensions: use este tipo de regla para anidar el archivo.* en file.js

  • fileToFile: Use este tipo de regla para anidar bower.json en .bowerrc

El proveedor extensionToExtension

Este proveedor le permite definir reglas de anidamiento de archivos mediante extensiones de archivo específicas. Considere el ejemplo siguiente:

reglas de ejemplo de extentionToExtension

efecto de ejemplo extentionToExtension

  • cart.js está anidado en cart.ts debido a la primera regla extensionToExtension

  • cart.js no está anidado en cart.tsx porque .ts aparece antes que .tsx en las reglas, y allí solo puede haber un único elemento primario.

  • light.css está anidado en light.sass por la segunda regla de extensionToExtension.

  • home.html está anidado en home.md debido a la tercera regla extensionToExtension

El proveedor fileSuffixToExtension

Este proveedor funciona igual que el proveedor extensionToExtension , con la única diferencia de que la regla examina el sufijo del archivo en lugar de simplemente la extensión. Considere el ejemplo siguiente:

reglas de ejemplo fileSuffixToExtension

efecto de ejemplo fileSuffixToExtension

  • portal-vsdoc.js está anidado en portal.js debido a la regla fileSuffixToExtension

  • todos los demás aspectos de la regla funcionan de la misma manera que extensionToExtension

El proveedor addedExtension

Este proveedor anida los archivos con una extensión adicional en un archivo sin una extensión adicional. La extensión adicional solo puede aparecer al final del nombre de archivo completo.

Considere el ejemplo siguiente:

reglas de ejemplo addedExtension

Efecto de ejemplo de addedExtension

  • file.html.css está anidado en file.html debido a la regla addedExtension

Nota:

No se especifican extensiones de archivo para la addedExtension regla; se aplica automáticamente a todas las extensiones de archivo. Es decir, cualquier archivo con el mismo nombre y extensión que otro archivo más una extensión adicional al final está anidado bajo el otro archivo. No puede limitar el efecto de este proveedor a solo extensiones de archivo específicas.

Proveedor de segmento de ruta

Este proveedor anida los archivos con una extensión adicional en un archivo sin una extensión adicional. La extensión adicional solo puede aparecer en el centro del nombre de archivo completo.

Considere el ejemplo siguiente:

Reglas de ejemplo pathSegment

Efecto de ejemplo pathSegment

  • jquery.min.js está anidado en jquery.js debido a la regla pathSegment

Nota:

  • Si no especifica ninguna extensión de archivo específica para la pathSegment regla, se aplica a todas las extensiones de archivo. Es decir, cualquier archivo con el mismo nombre y extensión que otro archivo más una extensión adicional en el medio se anida bajo el otro archivo.

  • Puede limitar el efecto de la pathSegment regla a extensiones de archivo específicas si las especifica de la siguiente manera:

    "pathSegment": {
        "add": {
          ".*": [
            ".js",
            ".css",
            ".html",
            ".htm"
          ]
        }
    }
    

El proveedor de allExtensions

Este proveedor le permite definir reglas de anidamiento de archivos para archivos con cualquier extensión, pero el mismo nombre de archivo base. Considere el ejemplo siguiente:

reglas de ejemplo allExtensions

ejemplo de efecto de todas las extensiones

  • template.cs y template.doc están anidados en template.tt debido a la regla allExtensions .

El proveedor fileToFile

Este proveedor le permite definir reglas de anidamiento de archivos basadas en nombres de archivo completos. Considere el ejemplo siguiente:

Reglas de ejemplo fileToFile

efecto de ejemplo fileToFile

  • .bowerrc está anidado en bower.json debido a la regla fileToFile

Orden de las reglas

La ordenación es importante en cada parte del archivo de configuración personalizado. Puede cambiar el orden en el que se ejecutan las reglas moviendolas hacia arriba o hacia abajo dentro del nodo dependentFileProvider . Por ejemplo, si tiene una regla que hace file.js el padre de file.ts y otra regla que hace file.coffee el padre de file.ts, el orden en que aparecen en el archivo dicta el comportamiento de anidamiento cuando los tres archivos están presentes. Dado que file.ts solo puede tener un elemento primario, cada regla que ejecute primero gana.

El orden también es importante para las secciones de reglas, no solo para los archivos de una sección. En cuanto un par de archivos coincide con una regla de anidamiento de archivos, se omiten otras reglas en el archivo y se procesa el siguiente par de archivos.

Botón de anidación de archivos

Puede administrar toda la configuración, incluida su propia configuración personalizada, a través del mismo botón en el Explorador de soluciones:

Activación de reglas de anidamiento de archivos personalizados

Creación de una configuración específica del proyecto

Puede crear configuraciones específicas de solución y de proyecto mediante el menú contextual de cada solución y proyecto.

Reglas de anidamiento específicas de la solución y del proyecto

La configuración específica de la solución y específica del proyecto se combina con la configuración activa de Visual Studio. Por ejemplo, puede tener un archivo de configuración específico del proyecto en blanco, pero el Explorador de Soluciones sigue anidando archivos. El comportamiento de anidamiento procede de la configuración específica de la solución o de la configuración de Visual Studio. La prioridad para combinar la configuración de anidamiento de archivos es: Visual Studio > Solución > Proyecto.

Puede indicar a Visual Studio que solo use la configuración específica de la solución o específica del proyecto estableciendo el nodo raíz en true. Visual Studio deja de combinar archivos en ese nivel y no lo combina con archivos superiores a la jerarquía.

Las configuraciones específicas de la solución y del proyecto se pueden integrar en el control de código fuente, y todo el equipo que trabaja en la base del código puede compartirlas.

Deshabilitar reglas de anidamiento de archivos para un proyecto

Puede deshabilitar las reglas de anidamiento de archivos globales existentes para soluciones o proyectos específicos mediante la acción quitar para un proveedor en lugar de agregar. Por ejemplo, si agrega el código de configuración siguiente a un proyecto, todas las reglas pathSegment que pueden existir globalmente para este proyecto específico están deshabilitadas:

"dependentFileProviders": {
  "remove": {
    "pathSegment": {}
  }
}