Neue Projekt-Generierung: Bei der ersten Teil Haube
Dachte vorhanden, wird gezeigt, wie Sie einen eigenen Projekttyp erstellt? Wundern Sie darauf, was tatsächlich der Fall, wenn Sie ein neues Projekt erstellen? Betrachten wir ein flüchtiger Blicken flüchtigen Blick unter der Haube übernehmen und sehen, was tatsächlich los.
Es gibt eine Reihe von Aufgaben, die Visual Studio für Sie koordiniert:
Es wird eine Struktur aller verfügbaren Projekttypen an.
Es wird eine Liste der Vorlagen Anwendung für jeden Projekttyp an und ermöglicht Ihnen ein auswählen.
Er sammelt Projektinformationen für die Anwendung wie Projektnamen und Pfad.
Es leitet diese Informationen an die Projektfactory weiter.
Es generiert Projektelemente und Ordner in der aktuellen Projektmappe befinden.
Das New Project Dialog Box
Sämtlicher er startet, wenn Sie ein neues Projekt für einen Projekttyp auswählen. Sehen Sie sich zunächst auf Neues Projekt im Menü Datei. Das Neues Projekt Dialogfeld wird angezeigt und sieht etwa folgendermaßen:
Betrachten wir eine genauere Anzeige werfen. Die Projekttypen Struktur listet die verschiedenen Projekttypen aufgeführt, die Sie erstellen können. Wenn Sie einen Projekttyp aus, z Visual C# Windowseine Liste der Vorlagen Anwendung abzurufende gestartet haben, finden. Von Visual Studio installierte Vorlagen werden von Visual Studio installiert und stehen jedem Benutzer des Computers zur Verfügung. Die neue Vorlagen, die Sie erstellen können Meine Vorlagen zu sammeln oder hinzugefügt werden und sind nur verfügbar.
Wenn Sie z. B. eine Vorlage Windows-Anwendung auswählen, wird eine Beschreibung des Typs der Anwendung im Dialogfeld. in diesem Fall Ein Projekt zum Erstellen einer Anwendung mit einer Windows-Benutzeroberfläche.
Am unteren Rand des Dialogfelds Neues Projekt finden Sie einige Steuerelemente, die weitere Informationen erfassen. Die Steuerelemente in der vom Projekttyp abzuhängen, aber schließen im Allgemeinen ein Textfeld, ein Speicherort Projektnamen und zugehörige Textfeld Durchsuchen eine Schaltfläche und ein Projektmappenname Textfeld- und verwandtes Projektmappenverzeichnis erstellen ein Kontrollkästchen.
Das New Project Dialog Box auffüllen
Woher ruft das Dialogfeld Neues Projekt die Informationen ab? Es gibt zwei Mechanismen bei der Arbeit mit einer von ihnen hier veraltet. Das Dialogfeld Neues Projekt kombiniert und zeigt die beiden Mechanismen abgerufenen Daten angezeigt.
Die ältere (veraltete) - Methode verwendet Systemregistrierungs Dateisystemeinträgen und .vsdir-Dateien. Dieser Mechanismus wird ausgeführt, als Visual Studio geöffnet hat. Die neuere Methode VSTEMPLATE-Dateien verwendet. Dieser Mechanismus wird ausgeführt, wenn Visual Studio zum Beispiel wird mithilfe der Initialisierung
devenv /setup
oder
devenv /installvstemplates
Projekttypen
Die Position und die Namen der Projekttypen Stammknoten, wie Visual C# und Andere Sprachen, wird durch Systemregistrierungs Dateisystemeinträgen bestimmt. Die Organisation der untergeordneten Knoten als Datenbank und Intelligentes Gerät, spiegelt die Hierarchie der Ordner, die die entsprechenden VSTEMPLATE-Dateien umfassen. Sehen Sie sich die Stammknoten zuerst überlegen.
Projekttyp-Stammknoten
Wenn Visual Studio initialisiert wird, durchläuft er die Unterschlüssel Systemregistrierungs Schlüssel HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ NewProjectTemplates \ TemplateDirs, um die Projekttypen Stammknoten der Struktur zu erstellen und zu benennen. Diese Informationen werden für die spätere Verwendung zwischengespeichert. Betrachten TemplateDirs FAE04EC1-301F-11D3-BF4B-00C04F79EFBC \ {} \ /1 Schlüssel. Jeder Eintrag ist ein VSPackage GUID. Der Name des Unterschlüssels (/1) wird ignoriert, aber ihr Vorhandensein gibt an, dass es sich um ein Projekttypen Stammknoten ist. Ein Stammknoten hat wiederum möglicherweise einige Unterschlüssel, die ihre Darstellung in der Projekttypen Struktur steuern. Sehen Sie sich einige von ihnen berücksichtigen.
(Standard)
Dies ist die Ressourcen-ID der lokalisierten dieser Zeichenfolge Namen der Stammknoten. Die Zeichenfolgenressource in der Satelliten-DLL ist, der durch das ein VSPackage GUID ausgewählt ist.
Im Beispiel ist das VSPackage GUID
FAE04EC1-301F-11D3-BF4B-00C04F79EFBC {}
und die Ressourcen-ID (Standardwert) des Stammknotens (/1) ist #2345
Wenn Sie das den GUID in der Nähe gelegenen Pakete verschlüsseln Sie überprüfen, und überprüfen Sie den SatelliteDll-Unterschlüssel, können Sie den Pfad der Assembly suchen, die die Zeichenfolgenressource enthält:
<Visual Studio-Installations Pfad> \ VC# \ VCSPackages \ 1033 \ csprojui.dll
Um dies zu überprüfen, öffnen Sie die Dateien und die csprojui.dll Ziehen Sie in Visual Studio-Verzeichnis. Die Zeichenfolgentabelle #2345 Ressource bestätigt, dass die Beschriftung **Visual C#**verfügt.
SortPriority
Dieser bestimmt die Position des Stammknotens in der Projekttypen Struktur.
SortPriority REG_DWORD 0x00000014 (20)
Je niedriger die Nummer der Priorität, desto höher ist die Position in der Struktur.
DeveloperActivity
Wenn dieser Unterschlüssel vorhanden ist, wird die Position des Stammknotens im Dialogfeld Entwickler-Einstellungs gesteuert. Beispiel:
DeveloperActivity REG_SZ VC#
Gibt an, dass Visual C# ein Stammknoten ist, wenn Visual Studio für Visual C++ Entwicklung festgelegt ist. Andernfalls ist dies ein untergeordneter Knoten aus Andere Sprachen.
Ordner
Wenn dieser Unterschlüssel vorhanden ist, wird der Knoten ein untergeordneter Knoten des angegebenen Ordners. Eine Liste möglicher Ordnern wird unter dem Schlüssel
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ VisualStudio \ 10.0 \ NewProjectTemplates \ PseudoFolders
Beispielsweise hat der Eintrag Datenbankprojekt einen Ordner Andere Projekttypen, die den Schlüssel in PseudoFolders übereinstimmt. Wie in der Projekttypen Struktur ist Datenbankprojekte ein untergeordneter Knoten aus Andere Projekttypen.
Projekttyp-untergeordnete Knoten und .vstdir-Dateien
Die Position der untergeordneten Knoten in der Struktur folgt Projekttypen der Hierarchie der Ordner in ProjectTemplates-Ordnern. Für Computer, Vorlagen (Von Visual Studio installierte Vorlagen), ist die typische Verzeichnis \ Programme \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ ProjectTemplates \ sowie für Benutzervorlagen (Meine Vorlagen), ist die typische Verzeichnis " \ Eigene Dateien \ Visual Studio 10 \ Templates \ ProjectTemplates \ ". Die Ordner hierarchien aus diesen beiden Speicherorten werden zusammengeführt, um die Projekttypen Struktur zu erstellen.
Bei Visual Studio mit Visual C++ Einstellungen der Entwickler sucht die Projekttypen Struktur etwa folgendermaßen:
Der entsprechende ProjectTemplates-Ordner sieht wie folgt aus:
Wenn das Neues Projekt Dialogfeld geöffnet wird, wird Visual Studio den ProjectTemplates-Ordner neu erstellt und ihre Struktur in der Projekttypen Struktur mit einigen Änderungen:
Der Stammknoten in der Projekttypen Struktur wird von der Vorlage Anwendung bestimmt.
Der Name des Knotens kann lokalisiert werden kann und Sonderzeichen enthalten.
Die Sortierreihenfolge kann geändert werden.
Der Stammknoten für einen Projekttyp finden
Wenn Visual Studio die ProjectTemplates-Ordner durchläuft, wird ihm alle ZIP-Dateien und extrahiert die VSTEMPLATE-Dateien. Eine VSTEMPLATE-Datei XML verwendet, um eine Vorlage Anwendung zu beschreiben. Weitere Informationen finden Sie unter Neue Projekt-Generierung: Bei der Haube zwei Komponenten.
Das <ProjectType> Tag bestimmt den Projekttyp für die Anwendung. Beispielsweise \ CSharp \ SmartDevice \ WindowsCE \ 1033 \ WindowsCE-EmptyProject.zip Datei enthält eine EmptyProject.vstemplate-Datei, die dieses Tag enthält:
<ProjectType>CSharp</ProjectType>
Das <ProjectType> Tag und nicht den Unterordner im ProjectTemplates-Ordner, bestimmt den Stammknoten einer Anwendung in der Projekttypen Struktur. Im Beispiel werden Visual C# Windows CE-Anwendungen unter dem Stammknoten angezeigt werden, und auch wenn Sie den WindowsCE-Ordner auf den Ordner Visual Basic Windows CE-Anwendungen verschieben möchten, geben Visual C# weiterhin unter dem Stammknoten angezeigt werden.
Lokalisieren des Knoten-Namen
Wenn Visual Studio die ProjectTemplates-Ordner durchläuft, überprüft er alle .vstdir-Dateien. Eine .vstdir-Datei ist eine XML-Datei, die die Darstellung des Projekttyps im Dialogfeld Neues Projekt steuert. In der .vstdir-Datei verwenden Sie das <LocalizedName> Tag, um den Projekttypen Knoten zu benennen.
Zum Beispiel CSharp- \ Database \ \ TemplateIndex.vstdir Datei enthält dieses Tag:
<LocalizedName Package="{462b036f-7349-4835-9e21-bec60e989b9c}" ID="4598"/>
Dadurch wird der Satelliten-DLL und die Ressourcen-ID der lokalisierten Zeichenfolge, die den Namen der Stammknoten in diesem Fall Datenbank. Der lokalisierte Name kann Sonderzeichen, die nicht für Ordnernamen verfügbar sind, z. B. .NETenthalten.
Wenn kein <LocalizedName> Tag vorhanden ist, wird der Projekttyp durch den Ordner selbst SmartPhone2003benannt.
Die Sortierreihenfolge für einen Projekttyp finden
Um die Sortierreihenfolge des Projekttyps zu bestimmen, verwenden .vstdir-Dateien das <SortOrder> Tag.
CSharp- z. B. \ \ Windows \ Windows.vstdir Datei enthält dieses Tag:
<SortOrder>5</SortOrder>
CSharp- \ Database \ \ TemplateIndex.vstdir Datei verfügt über ein Tag mit einem größeren Wert:
<SortOrder>5000</SortOrder>
Je niedriger wird die Zahl im <SortOrder> Tag Je höher die Position in der Struktur, sodass der Fenster Knoten höher ist als der Datenbank Knoten in der Struktur Projekttypen.
Wenn kein <SortOrder> Tag für einen Projekttyp angegeben wird, wird es in alphabetischer Reihenfolge nach allen Projekttypen, die <SortOrder> Spezifikationen enthalten.
Beachten Sie, dass es keine .vstdir-Dateien in den Ordnern Meine Dokumente (Meine Vorlagen) gibt. Benutzer anwendungsprojekt Typnamen und werden nicht lokalisiert werden in alphabetischer Reihenfolge angezeigt.
Eine schnellen Überprüfung
Betrachten wir das Dialogfeld Neues Projekt Benutzer ändern und eine neue Projektvorlage erstellen.
Fügen Sie einen MyProjectNode-Unterordner \ Programme \ Microsoft Visual Studio 10 \ Common7 \ IDE \ ProjectTemplates- \ CSharp-Ordner hinzu.
Erstellen Sie eine MyProject.vstdir-Datei im MyProjectNode-Ordner mit einem beliebigen Text-Editor.
Fügen Sie die folgenden Zeilen hinzu: .vstdir-Datei
<TemplateDir Version="1.0.0"> <SortOrder>6</SortOrder> </TemplateDir>
Speichern und schließen Sie die .vstdir-Datei.
Erstellen Sie eine MyProject.vstemplate-Datei im MyProjectNode-Ordner mit einem beliebigen Text-Editor.
Fügen Sie der VSTEMPLATE-Datei folgenden Zeilen hinzu:
<VSTemplate Version="2.0.0" Type="Project" xmlns="https://schemas.microsoft.com/developer/vstemplate/2005"> <TemplateData> <ProjectType>CSharp</ProjectType> </TemplateData> </VSTemplate>
Speichern Sie the.vstemplate-Datei, und schließen Sie den Editor.
Senden Sie die VSTEMPLATE-Datei in einen neuen komprimierten Ordner MyProjectNode \ MyProject.zip.
Vom Visual Studio-Befehlsfenster geben Sie Folgendes ein:
devenv /installvstemplates
Öffnen Sie Visual Studio.
- Öffnen Sie das Dialogfeld Neues Projekt und erweitern Sie den Knoten Visual C#.
MyProjectNode wird als untergeordneter Knoten des Visual C# im Fenster derzeit Knoten.