共用方式為


產生新專案︰深入探討,第二部分

產生新專案︰深入探討,第一部分中,我們了解如何填入 [新增專案] 對話方塊。 假設您已選取 [Visual C# Windows 應用程式],填寫 [名稱] 和 [位置] 文字方塊,然後按一下 [確定]。

產生方案檔案

選擇應用程式範本會指示 Visual Studio 解壓縮和開啟對應的 .vstemplate 檔案,並啟動範本來解譯此檔案中的 XML 命令。 這些命令會在新的或現有的方案中建立專案和專案項目。

此範本從包含 .vstemplate 檔案的相同 .zip 資料夾中解壓縮來源檔案 (稱為項目範本)。 範本會將這些檔案複製到新專案中,並進行相應的自訂。

範本參數取代

當範本將項目範本複製到新專案時,它會將所有範本參數替換為字串以自訂檔案。 範本參數是前面和後面加上貨幣符號的特殊權杖,例如:$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
    }
}

如果您建立名為 Simple 的新 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="http://schemas.microsoft.com/developer/vstemplate/2005"     Type="Project">
    <TemplateData>
    </TemplateData>
    <TemplateContent>
    </TemplateContent>
</VSTemplate>

我們查看<產生新專案︰深入探討,第一部分>中的 TemplateData 一節。 本節中的標籤可用來控制 [新增專案] 對話方塊的外觀。

<TemplateContent> 區段中的標籤可控制新專案和專案項目的產生。 以下是 \Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates\CSharp\Windows\1033\WindowsApplication.zip 資料夾中 cswindowsapplication.vstemplate 檔案的 <TemplateContent> 區段。

<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 應用程式資料夾結構如下所示:

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

範本中第一個且唯一的 <Project> 標籤的內容如下:

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

這指示 [新增專案] 範本藉由複製和自訂範本項目 windowsapplication.csproj 來建立 Simple.csproj 專案檔案。

設計工具與參考

您可以在 [方案總管] 中看到 Properties 資料夾存在,並包含預期的檔案。 但是專案參考和設計工具檔案相依性又如何呢?例如 Resources.Designer.cs 到 Resources.resx,以及 Form1.Designer.cs 到 Form1.cs 這些是在產生 Simple.csproj 檔案時在該檔案中設定的。

以下是從 Simple.csproj 建立專案參考的 <ItemGroup>:

<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.Designer.cs 相依於 Settings.settings:

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