Поделиться через


Создание нового проекта: В капотом, часть 2

IN Создание нового проекта: В клобуком элемента, соответствует увидели бы как Создать проект диалоговое окно заполняется. Допустим, выбранных a Windows-приложения Visual c#, заполнянное Имя и Расположение текстовые поля и нажатие ОК.

Создание файлов решения

Выбор шаблона приложения направляет Visual Studio распаковать и открыть соответствующий файл с расширением vstemplate и запустить шаблон для интерпретации команды XML в данном файле. Эти команды создают проекты и элементы проекта в новом или существующем решении.

Шаблон распаковывает, вызываемые исходные файлы, шаблонами элементов из одной папки zip, содержащий файл vstemplate. Шаблон копирует эти файлы к новому проекту, их настройки. Обзор проекта и шаблонов элементов см. в разделе шаблоны Visual Studio.

Замена параметров шаблона

Если шаблон копирует шаблон элемента к новому проекту, он заменяет все параметры шаблона со строками настраивать файл. Параметр шаблона особый маркер, который предшествует и за которым следует знак доллара, например, $date$.

Let - нам выглядеть стандартный шаблон элемента проекта. Извлечение и просмотрите Program.cs в программных файлах \ Microsoft Visual Studio 8 \ Common7 \ ide \ папку Шаблоны проекта \ 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
    }
}

Если создается новый проект с именем windows-приложения Простоем, то шаблон заменяет $safeprojectname$ параметр с именем проекта.

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

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

Полный список параметров шаблона содержится в разделе Параметры шаблона.

Просмотрев внутри файла vstemplate

Файл с расширением vstemplate имеет следующий формат косточек чуть-чуть

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

Мы посмотрели <TemplateData> раздел Создание нового проекта: В клобуком элемента, соответствует. Теги в этом разделе используются для наблюдения за внешний вид Создать проект диалоговое окно.

В теги <TemplateContent> управление раздела создание новых проектов и элементов проектов. Здесь <TemplateContent> раздел из файла cswindowsapplication.vstemplate в \ program files \ Microsoft Visual Studio 8 \ Common7 \ ide \ папку Шаблоны проекта \ 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>

<Проект> тег контролирует создание проекта. <ProjectItem> тег контролирует создание элемента проекта. ReplaceParameters если параметр имеет значение true, то шаблон настраивает все параметры шаблона в файле проекта или элемента. В этом случае все элементы проекта настраиваются, за исключением Settings.settings.

Параметр TargetFileName задает имя и относительный путь к результирующему файлу проекта или элемента. Это позволяет создать структуру папок проекта. Если не указать этот аргумент, то элемент проекта будет иметь то же имя, что и шаблон элемента проекта.

Результирующая структура папок windows-приложения выглядит следующим образом:

SimpleSolution

Первое, а лишь <Проект> тег в шаблоне считывает:

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

Это заставляет новый шаблон проекта создать файл проекта Simple.csproj путем копирования и настраивать элемент windowsapplication.csproj шаблона.

Конструкторы и ссылки

Можно видеть, что в обозревателе решений папку свойства присутствуют и содержит требуемые файлы. Но о ссылках проекта и зависимости файла конструктора, например Resources.Designer.cs к Resources.resx, и Form1.Designer.cs на Form1.cs? Эти установки в файле Simple.csproj, когда он создается.

Здесь <ItemGroup> из Simple.csproj, которое создает ссылки проекта:

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

Можно увидеть, что эти 6 ссылок на проекты, которые отображаются в обозревателе решений. Здесь раздел от других <ItemGroup>. Много строк кода были удалены для наглядности. Этот раздел позволяет зависимую ячейку Settings.Designer.cs на Settings.settings:

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

См. также

Основные понятия

Создание нового проекта: В клобуком элемента, соответствует

Другие ресурсы

MSBuild