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:
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