Como recolher arquivos personalizados no Visual Studio 2010, usando soluções existentes?

1

Em projetos do Visual Studio, geralmente uso classes parciais para extrair dados específicos e uniformes, como consultas de banco de dados ou IDs de rastreio, do código. Exemplo:

public partial class GremlinsProvider
{
    public Mogwai GetAMogwai()
    {
        TraceEvent(TraceEventType.Start, TraceId.SearchForMogwai,
            "Querying the database for a Mogwai.");
        var mogwai = new DataQuery(Queries.FindMogwai).ReadRow<Mogwai>();

        TraceEvent(TraceEventType.Stop, TraceId.MogwaiFound, "Found a Mogwai.");
        return mogwai;
    }
}

public partial class GremlinsProvider
{
    private class Queries
    {
        public const FindMogwai = @"
            select top 1
            from [Gremlins]
            where [IsAvailable] = 1 and [PetName] = N'Mogwai'";
    }
}

public partial class GremlinsProvider
{
    private enum TraceId
    {
        SearchForMogwai,
        MogwaiFound,
    }
}

Nesse caso, eu crio três arquivos:

  • GremlinsProvider.cs que contém a lógica,
  • GremlinsProvider.Queries.cs , que contém as strings constantes com as consultas do banco de dados,
  • GremlinsProvider.Trace.cs , que contém a enumeração de IDs de rastreio.

No Gerenciador de Soluções, quero que esses arquivos apareçam recolhidos. Por exemplo, GremlinsProvider.cs expandirá para conter GremlinsProvider.Queries.cs e GremlinsProvider.Trace.cs como seus filhos, assim como o Solution Explorer reduz os arquivos de designer ou recursos em um projeto do Windows Forms.

É possível fazer isso com soluções existentes (ou seja, sem ter que escrever minha própria extensão), seja configurando o Visual Studio 2010 ou por meio de uma extensão?

    
por Arseni Mourzenko 22.04.2012 / 12:56

1 resposta

2

Não tenho ideia de quais efeitos colaterais isso pode causar!

Pelo que posso dizer, a dobra é retirada da configuração DependentUpon no arquivo .csproj .

Como exemplo, a entrada para GremlinsProvider.Queries.cs deve ficar assim:

<Compile Include="GremlinsProvider.Queries.cs">
  <DependentUpon>GremlinsProvider.cs</DependentUpon>
</Compile>

Isso pode ser modificado a qualquer momento durante o desenvolvimento (não é necessário criar um novo projeto).

Se você está se perguntando se isso pode ser alcançado mais facilmente por meio do IDE, parece que as respostas são Não mas há uma extensão que promete fazer isso: VSCommands (o recurso é chamado de Agrupar / Desagrupar Itens ).

    
por 22.04.2012 / 13:18