Condividi tramite


nuova generazione di progetto: Nel the hood, una parte

Ha considerato mai su come creare per contenere il tipo di progetto? Meraviglia cìò che si verifica quando si crea un nuovo progetto? Occupi una sbirciata nel the hood e vediamo cìò che in corso.

Esistono diverse attività in Visual Studio vengono visualizzate automaticamente:

  • Visualizza una struttura ad albero di tutti i tipi di progetto disponibili.

  • Visualizza un elenco di modelli di applicazione per ogni tipo di progetto e consente di selezionare uno.

  • Raccoglie informazioni di progetto per l'applicazione, come nome del progetto e percorso.

  • Trasmettere queste informazioni sulla factory del progetto.

  • Genera elementi di progetto e le cartelle della soluzione corrente.

La finestra di dialogo Nuovo progetto

Tutti gli elementi iniziali quando si seleziona un tipo di progetto per un nuovo progetto. Lasciarci di avvio facendo clic Nuovo progetto il menu File. La finestra di dialogo di Nuovo progetto viene visualizzato, analizzando simile al seguente:

Finestra di dialogo Nuovo progetto

Occupi attentamente. La struttura ad albero di tipi di progetto vengono elencati i diversi tipi di progetto che è possibile creare. Quando si seleziona un tipo di progetto come Finestre di Visual C#, verranno un elenco di modelli di applicazione per cominciare a. Modelli Visual Studio installati è installato in Visual Studio ed è disponibile per qualsiasi utente del computer. I nuovi modelli che si crea o si raccolgono possono essere aggiunti a Modelli personali e sono disponibili solo per l'utente.

Quando si seleziona un modello come Applicazione Windows, una descrizione del tipo di applicazione verrà visualizzato nella finestra di dialogo, in questo caso, Progetto per la creazione di un'applicazione con interfaccia Windows.

In la parte inferiore della finestra di dialogo di Nuovo progetto , verranno visualizzati diversi controlli che sono rappresentazioni ulteriori informazioni. I controlli visualizzati in modo che dipendano dal tipo di progetto, ma includono in genere una casella di testo di Nome di progetto, una casella di testo di Percorso e un pulsante correlato di Sfoglia e una casella di controllo relativa alla casella di testo di Nome soluzione e di Crea directory per soluzione .

popolare la finestra di dialogo Nuovo progetto

Da dove la finestra di dialogo di Nuovo progetto ottiene le informazioni? Esistono due meccanismi sul lavoro di seguito, uno di essi deprecate. La finestra di dialogo di Nuovo progetto consente di raccogliere e visualizzare le informazioni ottenute da entrambi i meccanismi.

Il metodo (deprecata) precedente utilizza le voci del Registro di sistema e i file vsdir. Questo meccanismo viene eseguito quando Visual Studio è aperto. Il più recente metodo utilizza i file .vstemplate. Questo meccanismo viene eseguito quando Visual Studio viene inizializzato, ad esempio, in esecuzione

devenv /setup

oppure

devenv /installvstemplates

Tipi progetto

La posizione e i nomi dei nodi radice di tipi di progetto , come Visual C# e Altri linguaggi, è determinata dalle voci del Registro di sistema. L'organizzazione dei nodi figlio, come Database e Smart Device, rispecchia la gerarchia di cartelle che contengono i file corrispondenti .vstemplate. Esaminare i nodi radice per primo.

Nodi radice del tipo di progetto

Quando Visual Studio viene inizializzato, analizza le sottochiavi della chiave HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\VisualStudio\10.0\NewProjectTemplates\TemplateDirs del Registro di sistema per compilare e denominare i nodi radice della struttura ad albero di tipi di progetto . Queste informazioni vengono memorizzate nella cache per un utilizzo successivo. Esaminare} \ /1 della chiave di TemplateDirs \{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC. ogni voce è un VSPackage GUID. Il nome della sottochiave (/1) ignorato, ma la presenza indica che si tratta di un nodo radice di tipi di progetto . Un nodo radice può a sua volta che più sottochiavi che controllano il relativo aspetto della struttura ad albero di tipi di progetto . Esaminare alcune di esse.

(Valore predefinito)

Si tratta di ID di risorsa della stringa localizzata che denomina il nodo radice. La risorsa di tipo stringa si trova nella DLL satellite selezionato dal package VS GUID.

In l ' esempio, il package VS GUID è

{FAE04E C1 -301F-11D3-BF4B-00 C04 F79EFBC}

e ID di risorsa (valore predefinito) del nodo radice (/1) è #2345

Se si individua il GUID pacchetti adiacenti impostare ed esaminare la sottochiave di SatelliteDll, è possibile trovare il percorso dell' assembly contenente la risorsa di tipo stringa:

<Visual Studio installation path>\VC#\VCSPackages \ 1033 \ csprojui.dll

Per testare questo, aprire esplora file e il trascinamento csprojui.dll nella directory di Visual Studio. La tabella di stringhe mostra che la risorsa #2345 ha la barra del titolo Visual C#.

SortPriority

Questa impostazione determina la posizione del nodo radice nella struttura ad albero di tipi di progetto .

SortPriority REG_DWORD 0x00000014 (20)

Minore numero di priorità, più elevata la posizione nella struttura ad albero.

DeveloperActivity

Se la sottochiave è presente, la posizione del nodo radice è controllata dalla finestra di dialogo impostazioni dello sviluppatore. Di seguito è riportato un esempio:

DeveloperActivity REG_SZ VC#

indica che Visual c# sarà un nodo radice se Visual Studio è impostato per lo sviluppo di Visual C++ . In caso contrario, sarà un nodo figlio di Altri linguaggi.

Cartella

Se la sottochiave è presente, il nodo radice diventa un nodo figlio della cartella specificata. Un elenco delle cartelle possibili viene visualizzato nella chiave

HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\VisualStudio\10.0\NewProjectTemplates\PseudoFolders

Ad esempio, la voce di progetti di database dispone di una chiave della cartella che corrisponde a un'altra voce dei tipi di progetto in PseudoFolders. Pertanto, nella struttura ad albero di tipi di progetto , progetti di database sarà un nodo figlio di Altri tipi di progetto.

Nodi figlio del tipo di progetto e i file di .vstdir

Il percorso dei nodi figlio nella struttura ad albero di tipi di progetto segue la gerarchia di cartelle nelle cartelle di ProjectTemplates. Per i modelli del computer (Modelli Visual Studio installati), la posizione comune è \Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates \ e per i modelli dell' utente (Modelli personali), la posizione comune è \My Documents\Visual Studio 10\Templates\ProjectTemplates \. Le gerarchie della cartella da queste due posizioni vengono unite per creare la struttura ad albero di tipi di progetto .

Per Visual Studio le impostazioni di sviluppo di Visual C++ , la struttura ad albero di tipi di progetto è simile alla seguente:

Tipi di progetto

Gli aspetti corrispondenti della cartella di ProjectTemplates analogo al seguente:

Modelli di progetto

Quando la finestra di dialogo di Nuovo progetto è aperto, Visual Studio attraversa la cartella di ProjectTemplates e ne crea la struttura nella struttura ad albero di tipi di progetto con alcune modifiche:

  • Il nodo radice nella struttura ad albero di tipi di progetto è determinato dal modello di applicazione.

  • Il nome nodo può essere localizzato e può contenere caratteri speciali.

  • L'ordinamento può essere modificato.

Individuare il nodo radice per un tipo di progetto

Quando Visual Studio attraversa le cartelle di ProjectTemplates, aprire tutti i file con estensione zip e di estrarre tutti i file .vstemplate. Un file .vstemplate utilizza codice XML per descrivere un modello di applicazione. Per ulteriori informazioni, vedere nuova generazione di progetto: Nel the hood, inclusi due.

Il tag del <projecttype> determina il tipo di progetto per l'applicazione. Ad esempio, il file di \CSharp\SmartDevice\WindowsCE\1033\WindowsCE-EmptyProject.zip file contains an EmptyProject con estensione vstemplate con questo tag:

<ProjectType>CSharp</ProjectType>

Il tag del <projecttype> e non la sottocartella nella cartella di ProjectTemplates, determina il nodo radice di un'applicazione nella struttura ad albero dei tipi di progetto. In l ' esempio, le applicazioni di Windows CE queste appariranno sotto il nodo radice di Visual C# e anche se dovevate spostare la cartella di WindowsCE nella cartella Visual Basic, le applicazioni Windows CE ancora queste appariranno sotto il nodo radice di Visual C# .

Localizzare il nome nodo

Quando Visual Studio attraversa le cartelle di ProjectTemplates, esaminare tutti i file con estensione .vstdir ricerca. Un file di .vstdir è un file XML che controlla l'aspetto del tipo di progetto nella finestra di dialogo di Nuovo progetto . In il file di .vstdir, utilizzare il tag del <localizedname> per denominare il nodo dei tipi di progetto.

Ad esempio, il file di \CSharp\Database\TemplateIndex .vstdir contiene questo tag:

<LocalizedName Package="{462b036f-7349-4835-9e21-bec60e989b9c}" ID="4598"/>

Questa impostazione determina la DLL e ID di risorsa satellite della stringa localizzata che denomina il nodo radice, in questo caso, Database. Il nome localizzato può contenere caratteri speciali che non sono disponibili per i nomi di cartella, come .NET.

Se non esiste alcun tag del <localizedname> presente, il tipo di progetto viene denominato dalla cartella stessa, SmartPhone2003.

Trovare l'ordinamento per un tipo di progetto

Per determinare l'ordinamento del tipo di progetto, i file di .vstdir utilizzano il tag del <sortorder>.

Ad esempio, il file di \CSharp\Windows\Windows .vstdir contiene questo tag:

<SortOrder>5</SortOrder>

Il file di \CSharp\Database\TemplateIndex .vstdir dispone di un tag con un valore più grande:

<SortOrder>5000</SortOrder>

Minore numero nel tag del <sortorder>, più elevata la posizione nella struttura ad albero, pertanto il nodo di windows è superiore al nodo del database nella struttura ad albero dei tipi di progetto.

Se nessun tag del <sortorder> viene specificato per un tipo di progetto, visualizzato in ordine alfabetico dopo qualsiasi tipo di progetto che contengono le specifiche di <sortorder>.

Si noti che non sono presenti file di .vstdir in mie cartelle documenti (Modelli personali). I nomi dei tipi di progetto di applicazione utente non sono localizzati e non vengono visualizzati in ordine alfabetico.

Una revisione rapida

Modifichiamo la finestra di dialogo di Nuovo progetto e viene creato un nuovo modello di progetto utente.

  1. Per aggiungere una sottocartella di MyProjectNode alla cartella di \Program Files\Microsoft Visual Studio 10\Common7\IDE\ProjectTemplates\CSharp.

  2. Creare un file di MyProject.vstdir nella cartella di MyProjectNode utilizzando un qualsiasi editor di testo.

  3. Aggiungere le righe seguenti al file di .vstdir:

    <TemplateDir Version="1.0.0">
        <SortOrder>6</SortOrder>
    </TemplateDir>
    
  4. salvare e chiudere il file di .vstdir.

  5. Creare un file di MyProject.vstemplate nella cartella di MyProjectNode utilizzando un qualsiasi editor di testo.

  6. Aggiungere le righe seguenti al file .vstemplate:

    <VSTemplate Version="2.0.0" Type="Project" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005">
        <TemplateData>
            <ProjectType>CSharp</ProjectType>
        </TemplateData>
    </VSTemplate>
    
  7. salvare il file di the.vstemplate e chiudere l'editor.

  8. Inviare il file .vstemplate in una nuova cartella compressa di MyProjectNode \MyProject .zip.

  9. In la finestra di comando di Visual Studio, digitare:

    devenv /installvstemplates
    

Aprire Visual Studio.

  1. Aprire la finestra di dialogo di Nuovo progetto ed espandere il nodo del progetto di Visual C# .

MyProjectNode

MyProjectNode viene visualizzato come nodo figlio di Visual c# sotto il nodo di windows.

Vedere anche

Concetti

nuova generazione di progetto: Nel the hood, inclusi due