Bagikan melalui


Generasi Proyek Baru: Di Latar Belakang, Bagian Dua

Di Generasi Proyek Baru: Di bawah Hood, Bagian Satu kami melihat bagaimana Kotak dialog Proyek Baru diisi. Mari kita asumsikan Anda telah memilih Aplikasi Visual C# Windows, mengisi kotak teks Nama dan Lokasi , dan mengklik OK.

Membuat File Solusi

Memilih templat aplikasi mengarahkan Visual Studio untuk membuka zip dan membuka file .vstemplate yang sesuai, dan meluncurkan templat untuk menginterpretasikan perintah XML dalam file ini. Perintah ini membuat proyek dan item proyek di solusi baru atau yang sudah ada.

Templat membuka kemasan file sumber, yang disebut templat item, dari folder .zip yang sama yang menyimpan file .vstemplate. Templat menyalin file-file ini ke proyek baru, menyesuaikannya dengan sesuai.

Penggantian Parameter Templat

Saat templat menyalin templat item ke proyek baru, templat mengganti parameter templat apa pun dengan string untuk menyesuaikan file. Parameter templat adalah token khusus yang didahului dan diikuti oleh tanda dolar, misalnya, $date$.

Mari kita lihat templat item proyek biasa. Ekstrak dan periksa Program.cs di folder Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\CSharp\Windows\1033\WindowsApplication.zip.

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

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

Jika Anda membuat proyek aplikasi Windows baru bernama Simple, templat akan mengganti $safeprojectname$ parameter dengan nama proyek.

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

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

Untuk daftar lengkap parameter templat, lihat Parameter Templat.

A Look Inside a . VSTemplate File

File .vstemplate dasar memiliki format ini

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

Kami melihat <bagian TemplateData> di Generasi Proyek Baru: Di Bawah Kap Mesin, Bagian Satu. Tag di bagian ini digunakan untuk mengontrol tampilan kotak dialog Proyek Baru.

Tag di bagian <TemplateContent> mengontrol pembuatan proyek dan item proyek baru. Berikut <adalah bagian TemplateContent> dari file cswindowsapplication.vstemplate di folder \Program Files\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>

Tag <Proyek> mengontrol pembuatan proyek, dan <tag ProjectItem> mengontrol pembuatan item proyek. Jika parameter ReplaceParameters benar, templat akan menyesuaikan semua parameter templat dalam file atau item proyek. Dalam hal ini, semua item proyek disesuaikan, kecuali untuk Pengaturan.settings.

Parameter TargetFileName menentukan nama dan jalur relatif dari file atau item proyek yang dihasilkan. Ini memungkinkan Anda membuat struktur folder untuk proyek Anda. Jika Anda tidak menentukan argumen ini, item proyek akan memiliki nama yang sama dengan templat item proyek.

Struktur folder aplikasi Windows yang dihasilkan terlihat seperti ini:

Screenshot of the Windows application folder structure for the 'Simple' Solution in the Visual Studio Solution Explorer.

Tag Project> pertama dan satu-satunya <dalam templat berbunyi:

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

Ini menginstruksikan templat Proyek Baru untuk membuat file proyek Simple.csproj dengan menyalin dan menyesuaikan item templat windowsapplication.csproj.

Desainer dan Referensi

Anda dapat melihat di Penjelajah Solusi bahwa folder Properti ada dan berisi file yang diharapkan. Tetapi bagaimana dengan referensi proyek dan dependensi file perancang, seperti Resources.Designer.cs ke Resources.resx, dan Form1.Designer.cs ke Form1.cs? Ini disiapkan dalam file Simple.csproj saat dibuat.

Berikut adalah <ItemGroup> dari Simple.csproj yang membuat referensi proyek:

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

Anda dapat melihat bahwa ini adalah enam referensi proyek yang muncul di Penjelajah Solusi. Berikut adalah bagian dari ItemGroup> lain<. Banyak baris kode telah dihapus untuk kejelasan. Bagian ini membuat Pengaturan. Designer.cs bergantung pada Pengaturan.settings:

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