Partilhar via


Aninhamento de arquivos no Explorador de Soluções

O Gerenciador de Soluções aninha arquivos relacionados para ajudar a organizá-los e torná-los mais fáceis de localizar. Por exemplo, se você adicionar um formulário do Windows Forms a um projeto, o arquivo de código do formulário será aninhado abaixo do formulário no Gerenciador de Soluções. Em projetos .NET Core (e .NET 5 e posteriores), o aninhamento de arquivos pode ser levado um passo adiante. Você pode escolher entre as predefinições de aninhamento de ficheiros Desativado, Padrão e Web. Você também pode personalizar como os arquivos são aninhados ou criar configurações específicas da solução e do projeto.

Observação

No Visual Studio 2022 versão 17.2 e anteriores, esse recurso só era suportado para projetos ASP.NET Core. Na versão 17.3 e posterior, todos os projetos destinados ao .NET suportam aninhamento de arquivos.

Opções de aninhamento de arquivos

Botão para ativar/desativar o aninhamento de arquivos

As opções disponíveis para aninhamento de arquivos não personalizados são:

  • Desativado: esta opção fornece uma lista plana de ficheiros sem hierarquia.

  • Padrão: essa opção fornece o comportamento padrão de aninhamento de arquivos no Gerenciador de Soluções. Se não existirem configurações para um determinado tipo de projeto, nenhum arquivo no projeto será aninhado. Se existirem configurações (por exemplo, para um projeto Web), o aninhamento será aplicado.

  • Web: Esta opção aplica o comportamento de aninhamento de arquivos da Web a todos os projetos na solução atual. Tem inúmeras regras, e nós encorajamos você a verificá-lo e nos dizer o que você pensa. A captura de tela a seguir destaca apenas alguns exemplos do comportamento de aninhamento de arquivos que você obtém com essa opção:

    Aninhamento de ficheiros no Explorador de Soluções

Personalizar aninhamento de arquivos

Se você não gostar do que recebe prontamente, poderá criar suas próprias configurações personalizadas de aninhamento de arquivos que instruem o Gerenciador de Soluções sobre como aninhar arquivos. Você pode adicionar quantas configurações de aninhamento de arquivos personalizadas quiser e alternar entre elas conforme desejar. Para criar uma nova configuração personalizada, você pode começar com um arquivo vazio ou usar as configurações da Web como ponto de partida:

Adicionar regras de aninhamento de arquivos personalizados

Recomendamos que você use as configurações da Web como ponto de partida porque é mais fácil trabalhar com algo que já funciona. Se você usar as configurações da Web como ponto de partida, o arquivo .filenesting.json será semelhante ao seguinte arquivo:

Usar regras de aninhamento de arquivos existentes como base para configurações personalizadas

Vamos concentrar-nos no nó dependentFileProviders e nos seus nós filhos. Cada nó filho é um tipo de regra que o Visual Studio pode usar para aninhar ficheiros. Por exemplo, ter o mesmo nome de arquivo, mas uma extensão diferente é um tipo de regra. As regras disponíveis são:

  • extensionToExtension: Utilize este tipo de regra para aninhar file.js sob file.ts

  • fileSuffixToExtension: use este tipo de regra para aninharfile-vsdoc.js em file.js

  • addedExtension: Use este tipo de regra para aninhar file.html.css em file.html

  • pathSegment: use esse tipo de regra para aninharjquery.min.js sob jquery.js

  • allExtensions: Use este tipo de regra para aninhar o arquivo.* em file.js

  • fileToFile: Use este tipo de regra para aninharbower.json em .bowerrc

O provedor extensionToExtension

Esse provedor permite definir regras de aninhamento de arquivos usando extensões de arquivo específicas. Considere o seguinte exemplo:

regras de exemplo para extentionToExtension

exemplo de efeito extentionToExtension

  • cart.js está aninhado em cart.ts devido à primeira regra extensionToExtension

  • cart.js não está aninhado em cart.tsx porque .ts vem antes .tsx nas regras, e só pode haver um pai

  • light.css está aninhado em light.sass devido à segunda regra extensionToExtension

  • home.html está aninhado em home.md devido à terceira regra extensionToExtension

O provedor fileSuffixToExtension

Este provedor funciona exatamente como o provedor extensionToExtension , com a única diferença sendo que a regra olha para o sufixo do arquivo em vez de apenas a extensão. Considere o seguinte exemplo:

regras de exemplo fileSuffixToExtension

efeito de exemplo fileSuffixToExtension

  • portal-vsdoc.js está aninhado em portal.js devido à regra fileSuffixToExtension

  • todos os outros aspetos da regra funcionam da mesma forma que extensionToExtension

O provedor de extensões adicionadas

Este fornecedor aninha ficheiros com uma extensão adicional dentro do ficheiro sem uma extensão adicional. A extensão adicional só pode aparecer no final do nome do arquivo completo.

Considere o seguinte exemplo:

Regras de exemplo de 'addedExtension'

efeito de exemplo da extensão adicionada

  • file.html.css está aninhado em file.html devido à regra addedExtension

Observação

Você não especifica nenhuma extensão de arquivo para a addedExtension regra, ela se aplica automaticamente a todas as extensões de arquivo. Ou seja, qualquer arquivo com o mesmo nome e extensão que outro arquivo mais uma extensão adicional no final é aninhado sob o outro arquivo. Você não pode limitar o efeito deste provedor a apenas extensões de arquivo específicas.

O provedor pathSegment

Este provedor aninha arquivos com uma extensão adicional em um arquivo sem uma extensão adicional. A extensão adicional só pode aparecer no meio do nome do arquivo completo.

Considere o seguinte exemplo:

regras de exemplo pathSegment

exemplo de efeito pathSegment

  • jquery.min.js está aninhado em jquery.js devido à regra pathSegment

Observação

  • Se você não especificar nenhuma extensão de arquivo específica para a pathSegment regra, ela se aplicará a todas as extensões de arquivo. Ou seja, qualquer arquivo com o mesmo nome e extensão de outro arquivo mais uma extensão adicional no meio é aninhado sob o outro arquivo.

  • Você pode limitar o pathSegment efeito da regra a extensões de arquivo específicas especificando-as da seguinte maneira:

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

O provedor allExtensions

Este provedor permite definir regras de aninhamento de arquivos para arquivos com qualquer extensão, mas o mesmo nome de arquivo base. Considere o seguinte exemplo:

Regras de exemplo de allExtensions

exemplo de efeito allExtensions

  • template.cs e template.doc são aninhados sob template.tt devido à regra allExtensions .

O provedor fileToFile

Esse provedor permite definir regras de agrupamento de arquivos com base em nomes de arquivos inteiros. Considere o seguinte exemplo:

regras de exemplo fileToFile

fileToFile efeito de exemplo

  • .bowerrc está aninhado em bower.json devido à regra fileToFile

Ordem das regras

A encomenda é importante em todas as partes do seu ficheiro de definições personalizadas. Você pode alterar a ordem na qual as regras são executadas movendo-as para cima ou para baixo dentro do nó dependentFileProvider . Por exemplo, se você tiver uma regra que tornafile.js pai de file.ts e outra regra que torna file.coffee o pai de file.ts, a ordem em que eles aparecem no arquivo ditará o comportamento de aninhamento quando todos os três arquivos estiverem presentes. Como file.ts só pode ter um pai, a regra que for executada primeiro prevalece.

A ordenação também é importante para as próprias seções de regras, não apenas para arquivos dentro de uma seção. Assim que um par de arquivos é correspondido com uma regra de aninhamento de arquivos, outras regras mais abaixo no arquivo são ignoradas e o próximo par de arquivos é processado.

Botão de aninhamento de arquivos

Você pode gerenciar todas as configurações, incluindo suas próprias configurações personalizadas, através do mesmo botão no Gerenciador de Soluções:

Ativar regras de aninhamento de arquivos personalizados

Criar configurações específicas do projeto

Você pode criar configurações específicas da solução e do projeto através do menu do botão direito do mouse (menu de contexto) de cada solução e projeto:

Regras de aninhamento específicas da solução e do projeto

As configurações específicas da solução e do projeto são combinadas com as configurações ativas do Visual Studio. Por exemplo, você pode ter um ficheiro de configurações específicas do projeto em branco, mas o Gerenciador de Soluções continua a aninhar arquivos. O comportamento de aninhamento vem das configurações específicas da solução ou das configurações do Visual Studio. A precedência para mesclar configurações de aninhamento de arquivos é: Visual Studio > Solution > Project.

Você pode instruir o Visual Studio a usar apenas as configurações específicas da solução ou do projeto, definindo o nó raiz como verdadeiro. O Visual Studio para de mesclar arquivos nesse nível e não o combina com arquivos mais acima na hierarquia.

As configurações específicas da solução e do projeto podem ser verificadas no controle do código-fonte, e toda a equipe que trabalha na base de código pode compartilhá-las.

Desabilitar regras de aninhamento de arquivos para um projeto

Você pode desabilitar as regras de agrupamento de arquivos globais existentes para soluções ou projetos específicos usando a ação de remoção para um provedor em vez de adicionar. Por exemplo, se você adicionar o seguinte código de configurações a um projeto, todas as regras pathSegment que possam existir globalmente para esse projeto específico serão desabilitadas:

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