次の方法で共有


方法 : テンプレートを使用したプロジェクト作成コードを移行する

更新 : 2007 年 11 月

Visual Studio 2005 では、プロジェクトの作成プロセスがアップデートされています。ここでは、オートメーションを使ってプログラムからコードを作成する既存のアプリケーションをアップデートする手順を紹介します。

Visual Studio .NET 2002 および Visual Studio .NET 2003 では、プロジェクト テンプレートを基にプロジェクトを作成する場合、AddFromTemplate メソッドを呼び出し、該当するテンプレート ファイル (.vsz、cpp、cs など) の名前とパスを渡すことによってプロジェクトを作成していました。

しかし、Visual Studio 2005 では、プロジェクト テンプレート ファイルは .zip ファイルで圧縮されているため、従来の方法は使用できません。新しいプロジェクト テンプレート システムについては、「プロジェクト テンプレートの作成」で詳細に説明しています。EnvDTE80 アセンブリには、圧縮されたプロジェクト テンプレートにアクセスするための新たな手法が用意されています。GetProjectTemplateGetProjectItemTemplate などの新しいメソッドに加え、アップデート版の AddFromTemplate を使用することで、圧縮されたテンプレート ファイルを基に新しいプロジェクトおよびプロジェクト項目をプログラムから作成できます。

Visual Studio 2005 では、GetProjectTemplate を使用して、指定のテンプレート タイプのパスを取得し、それを AddFromTemplate メソッドに渡すことによって、新しいプロジェクトを作成します。これにより、テンプレート パスをハード コーディングする必要がなくなります。次の手順では、この具体的な方法について説明します。

新しいプロジェクト コードをアップグレードするには

  1. レガシ コードを Visual Studio に読み込むか、コードをコピーまたはインポートします。

  2. プロジェクトとプロジェクト項目テンプレートのパスがハード コーディングされているコード セクションを、GetProjectTemplate メソッドまたは GetProjectItemTemplate メソッドを使用したコード (以下を参照) と置き換えます。

  3. AddFromTemplate メソッド呼び出しを AddFromTemplate メソッドで置き換えます。

  4. コードをコンパイルして実行します。

使用例

プロジェクトおよびプロジェクト項目をプログラムから作成する方法を次の例に示します。Visual Basic のコンソール プロジェクトを作成し、そこに、HTML ページ (プロジェクト項目) を作成するものです。

Sub CreatePrjAndPrjItemExample()
    ' Get a reference to the Solution2 object and create
    ' the path variables.
    Dim soln As Solution2 = CType(DTE.Solution, Solution2)
    Dim vbPrjTemplatePath As String
    Dim vbItemTemplatePath As String
    Dim vbPrjPath As String = "C:\MyNewVBProject"
    Dim prjName As String = "New Visual Basic Console Project"
    Dim prj As Project
    Dim prjItems As ProjectItems

    MsgBox("Starting...")
    ' Get the project template path for a Visual Basic console project.
    vbPrjTemplatePath = _
    soln.GetProjectTemplate("ConsoleApplication.zip", _
     "VisualBasic")
    ' Create a new Visual Basic Console project by using the
    '  template obtained above.
    soln.AddFromTemplate(vbPrjTemplatePath, vbPrjPath, prjName, False)
    MsgBox("Done.")

    ' Reference the project and its items.
    prj = soln.Projects.Item(1)
    prjItems = prj.ProjectItems
    ' Get the path to the HTML Page template and add it to the project.
    vbItemTemplatePath = soln.GetProjectItemTemplate("HTMLPage.zip", _
    "VisualBasic")
    prjItems.AddFromTemplate(vbItemTemplatePath, "A New HTML Page")
End Sub
public void CreatePrjAndPrjItemExample(DTE2 dte)
{
    // Before running, set a reference to
    // System.Windows.Forms.
    // =============================
    // Get a reference to the Solution2 object and create
    // the path variables.
    Solution2 soln = (Solution2) dte.Solution;
    string vbPrjTemplatePath;
    string vbItemTemplatePath;
    string vbPrjPath = "C:\\MyNewVBProject";
    string prjName = "New Visual Basic Console Project";
    Project prj;
    ProjectItems prjItems;
    System.Windows.Forms.MessageBox.Show("Starting...");
    // Get the project template path for a Visual Basic console project.
    vbPrjTemplatePath = soln.GetProjectTemplate _
    ("ConsoleApplication.zip", VisualBasic");
    // Create a new Visual Basic Console project by using 
    // the template obtained above.
    soln.AddFromTemplate(vbPrjTemplatePath, vbPrjPath, prjName, false);
    System.Windows.Forms.MessageBox.Show("Done.");
     // Reference the project and its items.
    prj = soln.Projects.Item(1);
    prjItems = prj.ProjectItems;
    // Get the path to the HTML Page template and add it to the 
    // project.
    vbItemTemplatePath = soln.GetProjectItemTemplate _
    ("HTMLPage.zip", "VisualBasic");
    prjItems.AddFromTemplate(vbItemTemplatePath, "A New HTML Page");
}

参照

処理手順

方法 : オートメーション オブジェクト モデルのコード例をコンパイルおよび実行する

概念

プロジェクトとソリューションの制御

VSProject2 オブジェクトの概要