Condividi tramite


Procedura: creare modelli basati su più progetti

Aggiornamento: novembre 2007

I modelli multiprogetto fungono da contenitori per due o più progetti. Quando nella finestra di dialogo Nuovo progetto viene creato un progetto basato su un modello multiprogetto, ogni progetto incluso nel modello viene aggiunto alla soluzione.

Un modello multiprogetto deve contenere gli elementi riportati di seguito, compressi in un unico file .zip:

  • Un file .vstemplate principale per l'intero modello multiprogetto. Il file .vstemplate contiene i metadati che verranno visualizzati nella finestra di dialogo Nuovo progetto e specifica dove sono ubicati i file dei progetti in questo modello. Questo file deve risiedere nella directory principale del file .zip.

  • Una o più cartelle contenenti i file necessari per un modello di progetto completo, tra cui tutti i file di codice e un file .vstemplate relativi al progetto.

Ad esempio, un file .zip di un modello multiprogetto con due progetti potrebbe avere i file e le directory seguenti:

MultiProjectTemplate.vstemplate

\Project1\Project1.vstemplate

\Project1\Project1.vbproj

\Project1\Class.vb

\Project2\Project2.vstemplate

\Project2\Project2.vbproj

\Project2\Class.vb

Il file .vstemplate principale per un modello multiprogetto differisce da un modello a progetto singolo nelle seguenti caratteristiche:

  • L'attributo Type dell'elemento VSTemplate contiene il valore ProjectGroup. Di seguito è riportato un esempio:

    <VSTemplate Version="2.0.0" Type="ProjectGroup"
        xmlns="https://schemas.microsoft.com/developer/vstemplate/2005">
    
  • L'elemento TemplateContent contiene un elemento ProjectCollection con uno o più elementi ProjectTemplateLink che definiscono i percorsi dei file .vstemplate dei progetti inclusi. Di seguito è riportato un esempio:

    <TemplateContent>
        <ProjectCollection>
            <ProjectTemplateLink>
                Project1\Project1.vstemplate
            </ProjectTemplateLink>
            <ProjectTemplateLink>
                Project2\Project2.vstemplate
            </ProjectTemplateLink>
        </ProjectCollection>
    </TemplateContent>
    

Inoltre, i modelli multiprogetto si comportano diversamente dai modelli normali. I modelli multiprogetto presentano le seguenti caratteristiche univoche:

  • Ai singoli modelli di un modello multiprogetto non è possibile assegnare i nomi tramite la finestra di dialogo Nuovo progetto. Per specificare il nome di ogni progetto è necessario invece utilizzare l'attributo ProjectName nell'elemento ProjectTemplateLink. Per ulteriori informazioni, vedere il primo esempio nella sezione di seguito.

  • I modelli multiprogetto possono contenere progetti scritti in linguaggi diversi, ma l'intero modello può essere inserito in un'unica categoria con l'elemento ProjectType.

Per creare un modello multiprogetto

  1. Creare i progetti da includere nel modello multiprogetto.

  2. Creare i file .vstemplate per ciascuno dei progetti. Per ulteriori informazioni, vedere Procedura: creare modelli di progetto e Procedura: creare manualmente modelli di progetto.

  3. Creare un file .vstemplate principale che conterrà i metadati per il modello multiprogetto. Per ulteriori informazioni, vedere il primo esempio nella sezione di seguito.

  4. Selezionare i file e le cartelle da includere nel modello, fare clic con il pulsante destro del mouse, scegliere Invia a, quindi fare clic su Cartella compressa. I file e le cartelle verranno compressi in un file .zip.

  5. Inserire il file .zip del modello nella directory del modello di progetto di Visual Studio. Per impostazione predefinita, è la directory Documenti\Visual Studio 2008\Templates\ProjectTemplates.

Esempio

Nell'esempio riportato di seguito viene mostrato un file .vstemplate principale per un multiprogetto semplice. In questo esempio, il modello contiene due progetti My Windows Application e My Class Library. L'attributo ProjectName nell'elemento ProjectTemplateLink imposta il nome per Visual Studio da assegnare a questo progetto. Se l'attributo ProjectName non esiste, per il nome del progetto verrà utilizzato il nome del file .vstemplate.

<VSTemplate Version="2.0.0" Type="ProjectGroup"
    xmlns="https://schemas.microsoft.com/developer/vstemplate/2005">
    <TemplateData>
        <Name>Multi-Project Template Sample</Name>
        <Description>An example of a multi-project template</Description>
        <Icon>Icon.ico</Icon>
        <ProjectType>VisualBasic</ProjectType>
    </TemplateData>
    <TemplateContent>
        <ProjectCollection>
            <ProjectTemplateLink ProjectName="My Windows Application">
                WindowsApp\MyTemplate.vstemplate
            </ProjectTemplateLink>
            <ProjectTemplateLink ProjectName="My Class Library">
                ClassLib\MyTemplate.vstemplate
            </ProjectTemplateLink>
        </ProjectCollection>
    </TemplateContent>
</VSTemplate>

Nell'esempio riportato di seguito, l'elemento SolutionFolder viene utilizzato per dividere i progetti in due gruppi, Math Classes e Graphics Classes. Il modello contiene quattro progetti, due dei quali vengono inseriti in ogni cartella della soluzione.

<VSTemplate Version="2.0.0" Type="ProjectGroup"
    xmlns="https://schemas.microsoft.com/developer/vstemplate/2005">
    <TemplateData>
        <Name>Multi-Project Template Sample</Name>
        <Description>An example of a multi-project template</Description>
        <Icon>Icon.ico</Icon>
        <ProjectType>VisualBasic</ProjectType>
    </TemplateData>
    <TemplateContent>
        <ProjectCollection>
            <SolutionFolder Name="Math Classes">
                <ProjectTemplateLink ProjectName="MathClassLib1">
                    MathClassLib1\MyTemplate.vstemplate
                </ProjectTemplateLink>
                <ProjectTemplateLink ProjectName="MathClassLib2">
                    MathClassLib2\MyTemplate.vstemplate
                </ProjectTemplateLink>
            </SolutionFolder>
            <SolutionFolder Name="Graphics Classes">
                <ProjectTemplateLink ProjectName="GraphicsClassLib1">
                    GraphicsClassLib1\MyTemplate.vstemplate
                </ProjectTemplateLink>
                <ProjectTemplateLink ProjectName="GraphicsClassLib2">
                    GraphicsClassLib2\MyTemplate.vstemplate
                </ProjectTemplateLink>
            </SolutionFolder>
        </ProjectCollection>
    </TemplateContent>
</VSTemplate>

Vedere anche

Attività

Procedura: creare modelli di progetto

Procedura: creare manualmente modelli di progetto

Riferimenti

Riferimenti allo schema dei modelli di Visual Studio

Riferimenti allo schema dei modelli di Visual Studio

Elemento SolutionFolder (modelli di Visual Studio)

Elemento ProjectTemplateLink (modelli di Visual Studio)

Altre risorse

Starter kit

Modelli di Visual Studio