新项目生成:在后台下,第二部分

新项目生成:在后台下,第一部分 我们已经了解了 新项目 对话框如何填充。 假定您选择了 Visual C# windows 应用程序,将填写 名称位置 文本框并单击的 " 确定 "。

生成解决方案文件

选择应用程序模板处理 Visual Studio 提取和打开对应的 .vstemplate 文件压缩,因此,生成模板解释 XML 此文件顺序。 这些命令在新的或现有的解决方案中创建项目和项目项。

模板打开源文件,调用项目模板,该模板可以从保存 .vstemplate 文件的同一个 .zip 文件夹。 模板复制这些文件到新项目,会相应地对其进行自定义。 有关项目模板和项模板的概述,请参见 Visual Studio Templates

模板参数替换

当模板复制项目模板到新项目时,会将字符串替换所有模板参数自定义文件。 模板参数由美元符号,例如, $date$ 之前和之后的特定标记。

让我们看一个典型的项目项模板。 提取并检查 program files \Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\CSharp\Windows\1033\WindowsApplication .zip 文件夹的 Program.cs。

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

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

如果创建新的 windows 应用程序项目命名的 Simple,模板用项目的名称替换 $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 部分。在 \Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\CSharp\Windows\1033\WindowsApplication .zip 文件夹的 cswindowsapplication.vstemplate 文件。

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

Project 将控件标记项目的生成,因此, ProjectItem 控件标记项目项的生成。 如果参数 ReplaceParameters 为 true,模板将自定义在项目文件或项目中的所有模板参数。 在此情况下,所有项目项自定义,但 Settings.settings。

TargetFileName 参数指定生成的项目文件或项目的名称和相对路径。 这使您可以为项目创建一个文件夹结构。 如果未指定此参数,项目项将与该项目项模板相同。

发生的 windows 应用程序文件夹结构如下所示:

SimpleSolution

在模板的只有 Project 第一和标记为:

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

可以看到显示在解决方案资源管理器中的这些为六个项目引用。 这是从其他适配器集的 ItemGroup一部分。 多行代码为清楚起见已删除。 本节在 Settings.settings 进行 Settings.Designer.cs 依赖项:

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

请参见

概念

新项目生成:在后台下,第一部分

其他资源

MSBuild