Annidamento di file in Esplora soluzioni

Esplora soluzioni annida i file correlati per organizzarli e semplificarne l'individuazione. Ad esempio, se si aggiunge un modulo Windows Form a un progetto, il file di codice per il modulo viene annidato sotto il modulo in Esplora soluzioni. Nei progetti .NET Core (e .NET 5 e versioni successive) l'annidamento dei file può essere ulteriormente eseguito. È possibile scegliere tra i set di impostazioni di annidamento file Disattivato, Predefinito e Web. È anche possibile personalizzare il modo in cui i file vengono annidati o creare impostazioni specifiche della soluzione e specifiche del progetto.

Annotazioni

In Visual Studio 2022 versione 17.2 e versioni precedenti questa funzionalità è supportata solo per i progetti ASP.NET Core. Nella versione 17.3 e successive, tutti i progetti destinati all'annidamento dei file supportano .NET.

Opzioni di annidamento dei file

Screenshot che mostra il pulsante per attivare e disattivare l'annidamento dei file.

Pulsante per attivare/disattivare l'annidamento dei file

Le opzioni disponibili per l'annidamento dei file non personalizzati sono:

  • Off: questa opzione offre un elenco piatto di file senza alcuna struttura ad albero.

  • Impostazione predefinita: questa opzione offre il comportamento predefinito di annidamento dei file in Esplora soluzioni. Se non esistono impostazioni per un determinato tipo di progetto, non vengono annidati file nel progetto. Se esistono impostazioni (ad esempio, per un progetto web), l'annidamento viene applicato.

  • Web: questa opzione applica il comportamento di annidamento dei file Web a tutti i progetti nella soluzione corrente. Ha numerose regole, e vi invitiamo a controllare e dirci cosa pensate. Lo screenshot seguente evidenzia solo alcuni esempi del comportamento di annidamento dei file che si ottiene con questa opzione:

    Screenshot che mostra l'annidamento dei file in Esplora soluzioni.

    Annidamento di file in Esplora soluzioni

Personalizzare l'annidamento dei file

Se non ti piace quello che ottieni di default, puoi creare impostazioni personalizzate di annidamento di file che istruiscono Esplora soluzioni su come annidare i file. È possibile aggiungere tutte le impostazioni di annidamento dei file personalizzate desiderate ed è possibile passare da una all'altra nel modo desiderato. Per creare una nuova impostazione personalizzata, è possibile iniziare con un file vuoto oppure usare le impostazioni predefinite come punto di partenza:

Screenshot che mostra la finestra di dialogo Aggiungi impostazioni personalizzate di annidamento file.

È consigliabile usare le impostazioni predefinite come punto di partenza perché è più facile usare un elemento già funzionante. Se si usano le impostazioni predefinite come punto di partenza, il file .filenesting.json sarà simile al file seguente:

Se non ti piace quello che ottieni di default, puoi creare impostazioni personalizzate di annidamento di file che istruiscono Esplora soluzioni su come annidare i file. È possibile aggiungere tutte le impostazioni di annidamento dei file personalizzate desiderate ed è possibile passare da una all'altra nel modo desiderato. Per creare una nuova impostazione personalizzata, è possibile iniziare con un file vuoto oppure usare le impostazioni Web come punto di partenza:

Aggiungere regole di annidamento di file personalizzate

È consigliabile usare le impostazioni Web come punto di partenza perché è più facile usare un elemento già funzionante. Se si usano le impostazioni Web come punto di partenza, il file di.filenesting.json sarà simile al file seguente:

Screenshot che mostra i provider di regole di annidamento in un file di impostazioni personalizzato.

Usare le regole di annidamento dei file esistenti come base per le impostazioni personalizzate

Si esaminerà ora il nodo dependentFileProviders e i relativi nodi figlio. Ogni nodo figlio è un tipo di regola che Visual Studio può usare per annidare i file. Ad esempio, avere lo stesso nome file, ma un'estensione diversa è un tipo di regola. Le regole disponibili sono:

  • extensionToExtension: usare questo tipo di regola per annidare file.jsin file.ts

  • fileSuffixToExtension: usare questo tipo di regola per annidare file-vsdoc.js in file.js

  • addedExtension: usare questo tipo di regola per annidare file.html.css sotto file.html

  • pathSegment: usare questo tipo di regola per annidare jquery.min.js in jquery.js

  • allExtensions: usare questo tipo di regola per annidare il file.* sotto file.js

  • fileToFile: usare questo tipo di regola per annidare bower.json in .bowerrc

Il provider extensionToExtension

Questo provider consente di definire regole di annidamento file usando estensioni di file specifiche. Si consideri l'esempio seguente:

Screenshot che mostra una regola

Screenshot che mostra l'effetto della regola extensionToExtension.

Regole di esempio extentionToExtension

Effetto di esempio extentionToExtension

  • file.js è annidato in file.ts a causa della prima regola extensionToExtension .

  • file.js non è annidato in file.tsx perché .ts viene prima di .tsx nelle regole, e può esserci un solo genitore.

  • light.css è annidato in light.sass a causa della seconda regola extensionToExtension .

  • home.html è annidato in home.md a causa della terza regola extensionToExtension .

Il provider di fileSuffixToExtension

Questo provider funziona esattamente come il provider extensionToExtension , con l'unica differenza che la regola esamina il suffisso del file anziché solo l'estensione. Si consideri l'esempio seguente:

Screenshot che mostra la regola

Screenshot che mostra l'effetto della regola fileSuffixToExtension.

Regole di esempio fileSuffixToExtension

Effetto di esempio fileSuffixToExtension

  • portal-vsdoc.js è annidato in portal.js a causa della regola fileSuffixToExtension .

  • Ogni altro aspetto della regola funziona allo stesso modo di extensionToExtension.

Il provider di addedExtension

Questo provider annida i file con un'estensione aggiuntiva nel file senza un'estensione aggiuntiva. L'estensione aggiuntiva può essere visualizzata solo alla fine del nome file completo.

Si consideri l'esempio seguente:

Screenshot che mostra la regola di estensione aggiunta.

Screenshot che mostra l'effetto della regola di estensione aggiunta.

Regole di esempio addedExtension

effetto esempio di addedExtension

  • file.html.css è annidato in file.html a causa della regola addedExtension .

Annotazioni

Non si specificano estensioni di file per la addedExtension regola. Si applica automaticamente a tutte le estensioni di file. Ovvero, qualsiasi file con lo stesso nome e estensione di un altro file più un'estensione aggiuntiva alla fine viene annidato sotto l'altro file. Non è possibile limitare l'effetto di questo provider solo a estensioni di file specifiche.

Il fornitore di segmenti di percorso

Questo provider annida i file con un'estensione aggiuntiva in un file senza un'estensione aggiuntiva. L'estensione aggiuntiva può essere visualizzata solo al centro del nome file completo.

Si consideri l'esempio seguente:

Screenshot che illustra una regola 'pathSegment'.

Screenshot che mostra l'effetto della regola

Regole di esempio pathSegment

Effetto di esempio pathSegment

  • jquery.min.js è annidato in jquery.js a causa della regola pathSegment .

Annotazioni

  • Se non si specificano estensioni di file specifiche per la pathSegment regola, si applica a tutte le estensioni di file. Ovvero, qualsiasi file con lo stesso nome e estensione di un altro file più un'estensione aggiuntiva al centro viene annidato sotto l'altro file.

  • È possibile limitare l'effetto della pathSegment regola a estensioni di file specifiche specificandole nel modo seguente:

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

Il provider allExtensions

Questo provider consente di definire le regole di annidamento dei file per i file con qualsiasi estensione, ma lo stesso nome di file di base. Si consideri l'esempio seguente:

Screenshot che mostra la regola allExtensions.

Screenshot che mostra l'effetto della regola

Regole di esempio allExtensions

Esempio di effetto allExtensions

  • Template.cs e Template.doc sono annidati in Template.tt a causa della regola allExtensions .

Il provider fileToFile

Questo provider consente di definire regole di annidamento dei file in base a interi nomi file. Si consideri l'esempio seguente:

Screenshot che mostra una regola fileToFile.

Screenshot che mostra l'effetto della regola fileToFile.

Regole di esempio fileToFile

Effetto di esempio fileToFile

  • file.npmrc è annidato in package.json a causa della regola fileToFile .

Ordine delle regole

L'ordinamento è importante in ogni parte del file di impostazioni personalizzate. È possibile modificare l'ordine in cui vengono eseguite le regole spostandole verso l'alto o verso il basso all'interno del nodo dependentFileProvider . Ad esempio, se si dispone di una regola che rende file.js padre di file.ts e un'altra regola che rende file.coffee l'elemento padre di file.ts, l'ordine in cui vengono visualizzati nel file determina il comportamento di annidamento quando sono presenti tutti e tre i file. Poiché file.ts può avere un solo elemento padre, vince la regola che viene eseguita per prima.

L'ordinamento è importante anche per le sezioni delle regole stesse, non solo per i file all'interno di una sezione. Non appena una coppia di file corrisponde a una regola di annidamento file, altre regole più in basso nel file vengono ignorate e la coppia di file successiva viene elaborata.

Pulsante di annidamento file

È possibile gestire tutte le impostazioni, incluse le impostazioni personalizzate, tramite lo stesso pulsante in Esplora soluzioni:

Screenshot che mostra le voci di menu per l'attivazione di regole di annidamento file personalizzate.

Attivare regole di annidamento file personalizzate

Creare impostazioni specifiche del progetto

È possibile creare impostazioni specifiche della soluzione e specifiche del progetto aggiungendo un file.filenesting.json alla cartella radice della soluzione o alla cartella radice del progetto.

È possibile creare impostazioni specifiche della soluzione e del progetto tramite il menu contestuale di ciascuna soluzione e progetto.

Regole di annidamento specifiche della soluzione e del progetto

Le impostazioni specifiche della soluzione e specifiche del progetto vengono combinate con le impostazioni di Visual Studio attive. Ad esempio, potresti avere un file di impostazioni specifico del progetto vuoto, ma Esplora soluzioni continua ad annidare i file. Il comportamento di annidamento proviene dalle impostazioni specifiche della soluzione o dalle impostazioni di Visual Studio. La precedenza per l'unione delle impostazioni di annidamento dei file è: Visual Studio > Soluzione > Progetto.

È possibile indicare a Visual Studio di usare solo le impostazioni specifiche della soluzione o specifiche del progetto impostando il nodo radice su true. Visual Studio arresta l'unione dei file a tale livello e non la combina con i file in alto nella gerarchia.

Le impostazioni specifiche della soluzione e specifiche del progetto possono essere controllate nel controllo del codice sorgente e l'intero team che lavora sulla codebase può condividerle.

Disabilitare le regole di annidamento dei file per un progetto

È possibile disabilitare le regole di annidamento di file globali esistenti per soluzioni o progetti specifici usando l'azione di rimozione per un provider invece di aggiungere. Ad esempio, se si aggiunge il codice di impostazioni seguente a un progetto, tutte le regole pathSegment che possono esistere a livello globale per questo progetto specifico sono disabilitate:

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