Partilhar via


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

Na Nova geração de projeto: Nos bastidores, a parte um , vimos como o Novo projeto caixa de diálogo caixa é preenchida. Vamos supor que você selecionou um Visual C# Windows Application, preenchido a nome e local caixas de texto e clicou em OK.

Gerar os arquivos de solução

Escolher um modelo de aplicativo direciona Visual Studio para descompactar e abrir o arquivo. vstemplate correspondente e iniciar um modelo para interpretar os comandos XML neste arquivo. Esses comandos criam projetos e itens de projeto da solução de nova ou existente.

O modelo descompacta os arquivos de origem, denominados modelos de item, da mesma pasta. zip que contém o arquivo. vstemplate. O modelo copia esses arquivos para o novo projeto, personalizá-las adequadamente. Para uma visão geral dos modelos de projeto e item, consulte Visual Studio Templates.

Substituição de parâmetro de modelo

Quando o modelo copia um modelo de item para um novo projeto, ele substitui quaisquer parâmetros de modelo com seqüências de caracteres para personalizar o arquivo. Um parâmetro de modelo é um símbolo especial que é precedido e seguido de um sinal de dólar, por exemplo, $date$.

Vamos examinar um modelo de item de projeto típico. Extrair e examine Program. cs na pasta 8\Common7\IDE\ProjectTemplates\CSharp\Windows\1033\WindowsApplication.zip de Visual Studio de Programas\Microsoft do programa.

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace $safeprojectname$
{
    static class Program
    {
        // source code deleted here for brevity
    }
}

Se você criar um novo projeto de aplicativo do Windows chamado simples, o modelo substitui o $safeprojectname$ parâmetro com o nome do projeto.

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace Simple
{
    static class Program
    {
        // source code deleted here for brevity
    }
}

Para obter uma lista completa dos parâmetros de modelo, consulte Parâmetros de modelo.

Dentro de um aparência um.Arquivo VSTemplate

Um arquivo. vstemplate de esqueleto possui esse formato

<VSTemplate Version="2.0.0"     xmlns="https://schemas.microsoft.com/developer/vstemplate/2005"     Type="Project">
    <TemplateData>
    </TemplateData>
    <TemplateContent>
    </TemplateContent>
</VSTemplate>

Examinamos o <TemplateData> seção de Nova geração de projeto: Nos bastidores, a parte um. As marcas nessa seção são usadas para controlar a aparência da Novo projeto caixa de diálogo.

As marcas no <TemplateContent> a geração de novos projetos e itens de projeto de controle de seção. Aqui está o <TemplateContent> seção do arquivo cswindowsapplication.vstemplate na pasta \Arquivos de Programas\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\CSharp\Windows\1033\WindowsApplication.zip.

<TemplateContent>
  <Project File="WindowsApplication.csproj" ReplaceParameters="true">
    <ProjectItem ReplaceParameters="true"
      TargetFileName="Properties\AssemblyInfo.cs">
      AssemblyInfo.cs
    </ProjectItem>
    <ProjectItem TargetFileName="Properties\Resources.resx">
      Resources.resx
    </ProjectItem>
    <ProjectItem ReplaceParameters="true"       TargetFileName="Properties\Resources.Designer.cs">
      Resources.Designer.cs
    </ProjectItem>
    <ProjectItem TargetFileName="Properties\Settings.settings">
      Settings.settings
    </ProjectItem>
    <ProjectItem ReplaceParameters="true"       TargetFileName="Properties\Settings.Designer.cs">
      Settings.Designer.cs
    </ProjectItem>
    <ProjectItem ReplaceParameters="true" OpenInEditor="true">
      Form1.cs
    </ProjectItem>
    <ProjectItem ReplaceParameters="true">
      Form1.Designer.cs
    </ProjectItem>
    <ProjectItem ReplaceParameters="true">
      Program.cs
    </ProjectItem>
  </Project>
</TemplateContent>

O <Project> marca controla a geração de um projeto e <ProjectItem> marca controla a geração de um item de projeto. Se o parâmetro ReplaceParameters for true, o modelo personalizará todos os parâmetros de modelo no arquivo de projeto ou item. Nesse caso, todos os itens de projeto são personalizados, exceto para o Settings.

O parâmetro TargetFileName Especifica o nome e o caminho relativo do arquivo resultante do projeto ou item. Isso lhe permite criar uma estrutura de pastas do seu projeto. Se você não especificar esse argumento, o item de projeto terá o mesmo nome que o modelo de item de projeto.

A estrutura de pasta de aplicativo Windows resultante terá esta aparência:

SimpleSolution

A primeira e única <Project> lê a marca no modelo:

<Project File="WindowsApplication.csproj" ReplaceParameters="true">

Isso instrui o modelo de novo projeto para criar o arquivo de projeto Simple.csproj copiando e personalizando o windowsapplication.csproj de item de modelo.

Designers e referências

Se a pasta de propriedades está presente e que contém os arquivos esperados, você pode ver no Solution Explorer. Mas e quanto ao projeto referencia e dependências do arquivo de designer, como, por exemplo, Form1 para Form1. cs e Resources.Designer.cs para resx? Eles são configurados no arquivo Simple.csproj quando ele é gerado.

Aqui está o <ItemGroup> de Simple.csproj, que cria as referências do projeto:

<ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Deployment" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
</ItemGroup>

Você pode ver que essas são as referências do seis projeto que aparecem no Solution Explorer. Aqui está uma seção do outro <ItemGroup>. Muitas linhas de código tenham sido excluídas por motivos de clareza. Esta seção faz Settings.Designer.cs dependentes Settings:

<ItemGroup>
    <Compile Include="Properties\Settings.Designer.cs">
        <DependentUpon>Settings.settings</DependentUpon>
    </Compile>
</ItemGroup>

Consulte também

Conceitos

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

Outros recursos

MSBuild