Partilhar via


Nova geração de projeto: Nos bastidores, a parte um

Jamais pensou em como criar seu próprio tipo de projeto? Se perguntar o que realmente acontece quando você cria um novo projeto? Vamos, dê uma olhada nos bastidores e ver o que realmente está acontecendo.

Existem várias tarefas que coordena a Visual Studio para você:

  • Ele exibe uma árvore de todos os tipos de projeto disponíveis.

  • Ele exibe uma lista de modelos de aplicativos para cada tipo de projeto e permite que você escolha um.

  • Ele coleta informações sobre o projeto para o aplicativo, como o caminho e nome do projeto.

  • Ele passa essas informações para a fábrica de projeto.

  • Ele gera pastas e itens de projeto na solução atual.

A caixa de diálogo Novo projeto

Tudo começa quando você seleciona um tipo de projeto para um novo projeto. Vamos começar clicando em Novo projeto sobre o arquivo menu. O Novo projeto caixa de diálogo aparece, aparência semelhante a este:

Caixa de diálogo Novo projeto

Vamos dar uma boa olhada. O tipos de projeto os vários tipos de projeto, você pode criar listas de árvore. Quando você seleciona um tipo de projeto como Visual C# Windows, você verá uma lista dos modelos de aplicativos para você começar. Modelos instalados do Visual Studio são instalados por Visual Studio e estão disponíveis para qualquer usuário do seu computador. Novos modelos que você cria ou coleta podem ser adicionados a Meus modelos e estão disponíveis somente para você.

Quando você seleciona um modelo como Windows Application, uma descrição do tipo de aplicativo aparece na caixa de diálogo o; Nesse caso, um projeto para criar um aplicativo com uma interface de usuário do Windows.

Na parte inferior do Novo projeto caixa de diálogo, você verá vários controles que coletam mais informações. Os controles que você vê dependem do tipo de projeto, mas geralmente elas incluem um projeto nome caixa de texto, um local caixa de texto e relacionados Procurar botão e um Nome da solução caixa de texto e relacionados Create directory for solution caixa de seleção.

Preenchendo a caixa de diálogo Novo projeto

Onde oferece o Novo projeto caixa de diálogo obter suas informações de? Há dois mecanismos no trabalho aqui, um deles preterido. O Novo projeto caixa de diálogo combina e exibe as informações obtidas a partir de ambos os mecanismos.

O método de (obsoleto) antigo usa arquivos de .vsdir e entradas de registro do sistema. Esse mecanismo é executado quando Visual Studio é aberto. O método mais recente usa arquivos. vstemplate. Esse mecanismo é executado quando Visual Studio é inicializada, por exemplo, executando

devenv /setup

ou

devenv /installvstemplates

Tipo de Projeto

A posição e os nomes da tipos de projeto raiz nós, como C# Visual e Outros idiomas, é determinada por entradas de registro do sistema. A organização de nós filho, tais como banco de dados e Smart Device, reflete a hierarquia das pastas que contêm os arquivos correspondentes do. vstemplate. Vejamos os nós de raiz primeiro.

Nós de raiz do tipo de projeto

Quando Visual Studio é inicializado, ele percorre as subchaves da chave do registro do sistema HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\NewProjectTemplates\TemplateDirs para criar e nomear os nós de raiz da tipos de projeto árvore. Essas informações são armazenadas em cache para uso posterior. Examine a chave de \/1 TemplateDirs\ {FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}. Cada entrada é um GUID VSPackage. O nome da subchave (/ 1) é ignorado, mas sua presença indica que este é um tipos de projeto nó raiz. Um nó raiz pode ter diversas subchaves que controlam sua aparência na tipos de projeto árvore. Vamos ver alguns deles.

(Padrão)

Esta é a identificação de recurso da seqüência de caracteres localizada que nomeia o nó raiz. O recurso de seqüência está localizado na DLL selecionada pelo GUID VSPackage satélite.

No exemplo, o GUID de VSPackage é

{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}

e a identificação de recurso (valor padrão) do nó raiz (/ 1) é # 2345

Se você procura o GUID na chave próximo pacotes e examine a subchave SatelliteDll, você pode localizar o caminho do assembly que contém o recurso de seqüência de caracteres:

< caminho de instalação do Visual Studio > \VC#\VCSPackages\1033\csprojui.dll

Para verificar isso, abra o Gerenciador de arquivos e arraste o csprojui.dll para o diretório Visual Studio.. A tabela de cadeia de caracteres mostra que o recurso 2345 # tem a legenda Visual C#.

SortPriority

Isso determina a posição do nó raiz do tipos de projeto árvore.

SortPriority REG_DWORD 0x00000014 (20)

Quanto menor o número de prioridade, maior será a posição da árvore.

DeveloperActivity

Se essa subchave estiver presente, a posição do nó raiz é controlada pela caixa de diálogo Configurações do desenvolvedor. Por exemplo,

DeveloperActivity REG_SZ VC#

indica que Visual C# será um nó raiz se Visual Studio estiver definida para Visual C++ desenvolvimento. Caso contrário, ele será um nó filho do Outros idiomas.

Folder

Se essa subchave estiver presente, o nó raiz torna-se um nó filho da pasta especificada. Uma lista de pastas possíveis aparece sob a chave

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\NewProjectTemplates\PseudoFolders

Por exemplo, a entrada de projetos de banco de dados tem uma chave de pasta que corresponde à entrada Other Project Types na PseudoFolders. No tipos de projeto árvore, Os projetos de banco de dados será um nó filho do Other Project Types.

Arquivos de .vstdir e nós filho de tipo de projeto

A posição de nós filhos a tipos de projeto árvore segue a hierarquia das pastas nas pastas ProjectTemplates. Para modelos de máquina (modelos instalados do Visual Studio), o local típico é \Arquivos de Programas\Microsoft 10.0\Common7\IDE\ProjectTemplates\ de Visual Studio e para modelos do usuário (Meus modelos), o local típico é \Meus Documentos\Visual Studio 10\Templates\ProjectTemplates\. As hierarquias de pasta desses dois locais são mescladas para criar o tipos de projeto árvore.

Para Visual Studio com Visual C++ configurações de desenvolvedor, o tipos de projeto árvore ter esta aparência:

Tipos de projeto

A pasta correspondente do ProjectTemplates tem esta aparência:

Modelos de projeto

Quando o Novo projeto abre a caixa de diálogo, Visual Studio percorre a pasta ProjectTemplates e recria a sua estrutura de tipos de projeto árvore com algumas alterações:

  • O nó raiz no tipos de projeto árvore é determinado pelo modelo de aplicativo.

  • O nome do nó pode ser localizado e pode conter caracteres especiais.

  • A ordem de classificação pode ser alterada.

Localizar o nó raiz para um tipo de projeto

Quando Visual Studio percorre as pastas ProjectTemplates, ele abre todos os arquivos. zip e extrai os arquivos. vstemplate. Um arquivo. vstemplate usa o XML para descrever o modelo de aplicativo. Para mais informações, consulte Nova geração de projeto: Sob o capô, parte dois.

O <ProjectType> marca determina o tipo de projeto para o aplicativo. Por exemplo, o arquivo de \CSharp\SmartDevice\WindowsCE\1033\WindowsCE-EmptyProject.zip contém um arquivo de EmptyProject.vstemplate que tem esta marca:

<ProjectType>CSharp</ProjectType>

O <ProjectType> marca e não a subpasta na pasta ProjectTemplates, determina o nó raiz do aplicativo do tipos de projeto árvore. No exemplo, aplicativos de Windows CE seriam exibida sob o C# Visual nó raiz, e mesmo se você mover a pasta do WindowsCE para a pasta de VisualBasic, aplicativos de Windows CE ainda seriam exibida no C# Visual nó raiz.

Localizando o nome do nó

Quando o Visual Studio percorre as pastas ProjectTemplates, ele examina a quaisquer arquivos de .vstdir que encontrar. Um arquivo de .vstdir é um arquivo XML que controla a aparência do tipo no projeto de Novo projeto caixa de diálogo. No arquivo .vstdir, use o <LocalizedName> marca para o nome do tipos de projeto nó.

Por exemplo, o arquivo de \CSharp\Database\TemplateIndex.vstdir contém esta marca:

<LocalizedName Package="{462b036f-7349-4835-9e21-bec60e989b9c}" ID="4598"/>

Isso determina a identificação de DLL e o recurso de satélite da seqüência de caracteres localizada que nomeia o nó raiz, nesse caso, banco de dados. O nome localizado pode conter caracteres especiais que não estão disponíveis para os nomes de pasta, como .NET.

Se <LocalizedName> marca estiver presente, o tipo de projeto é nomeado pela pasta propriamente dito, SmartPhone2003.

Localizando a ordem de classificação para um tipo de projeto

Para determinar a ordem de classificação do tipo de projeto, os arquivos de .vstdir usam o <SortOrder> marca.

Por exemplo, o arquivo de \CSharp\Windows\Windows.vstdir contém esta marca:

<SortOrder>5</SortOrder>

O arquivo de \CSharp\Database\TemplateIndex.vstdir tem uma marca com um valor maior:

<SortOrder>5000</SortOrder>

Quanto menor o número da <SortOrder> tag, maior será a posição da árvore, assim, a Windows nó aparece maior do que o banco de dados nó na tipos de projeto árvore.

Se <SortOrder> marca é especificada para um tipo de projeto, ele será exibido em ordem alfabética, seguindo a quaisquer tipos de projetos que contenham <SortOrder> especificações.

Observe que não há nenhum arquivo de .vstdir em Meus documentos (Meus modelos) pastas. Nomes de tipo de projeto de aplicativo de usuário não são localizados e aparecem em ordem alfabética.

Uma rápida revisão

Vamos modificar a Novo projeto caixa de diálogo caixa e criar um novo modelo de projeto do usuário.

  1. Adicione uma subpasta do MyProjectNode a pasta \Arquivos de Programas\Microsoft Visual Studio 10\Common7\IDE\ProjectTemplates\CSharp.

  2. Crie um arquivo de MyProject.vstdir na pasta MyProjectNode usando qualquer editor de texto.

  3. Adicione essas linhas no arquivo .vstdir:

    <TemplateDir Version="1.0.0">
        <SortOrder>6</SortOrder>
    </TemplateDir>
    
  4. Salve e feche o arquivo .vstdir.

  5. Crie um arquivo de MyProject.vstemplate na pasta MyProjectNode usando qualquer editor de texto.

  6. Adicione essas linhas no arquivo. vstemplate:

    <VSTemplate Version="2.0.0" Type="Project" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005">
        <TemplateData>
            <ProjectType>CSharp</ProjectType>
        </TemplateData>
    </VSTemplate>
    
  7. Salve o arquivo de the.vstemplate e feche o editor.

  8. Envie o arquivo. vstemplate para uma nova pasta compactada de MyProjectNode\MyProject.zip.

  9. Da janela de comando Visual Studio, digite:

    devenv /installvstemplates
    

Abra Visual Studio.

  1. Aberto o Novo projeto caixa de diálogo caixa e expanda o C# Visual no nó do projeto.

MyProjectNode

MyProjectNode aparece como um nó filho de Visual C# logo abaixo do nó do Windows.

Consulte também

Conceitos

Nova geração de projeto: Sob o capô, parte dois