Freigeben über


Projektkonfiguration für die Ausgabe

Jede Konfiguration kann eine Reihe von Buildprozessen unterstützen, die Ausgabeelemente wie ausführbare Dateien oder Ressourcendateien erzeugen. Diese Ausgabeelemente sind privat für den Benutzer und können in Gruppen platziert werden, die verwandte Ausgabetypen verknüpfen, z. B. ausführbare Dateien (.exe, .dll, .lib) und Quelldateien (IDL, H-Dateien).

Ausgabeelemente können über die IVsOutput2 Methoden verfügbar gemacht und mit den IVsEnumOutputs Methoden aufgezählt werden. Wenn Sie Ausgabeelemente gruppieren möchten, sollte ihr Projekt auch die IVsOutputGroup Schnittstelle implementieren.

Das durch die Implementierung IVsOutputGroup entwickelte Konstrukt ermöglicht es Projekten, Ausgaben nach Verwendung zu gruppieren. Beispielsweise kann eine DLL mit ihrer Programmdatenbank (PDB) gruppiert werden.

Hinweis

Eine PDB-Datei enthält Debuginformationen und wird erstellt, wenn beim Erstellen der .dll oder .exe die Option "Debuginformationen generieren" angegeben wird. Die PDB-Datei wird in der Regel nur für die Debugprojektkonfiguration generiert.

Das Projekt muss die gleiche Anzahl von Gruppen für jede unterstützte Konfiguration zurückgeben, obwohl die Anzahl der in einer Gruppe enthaltenen Ausgaben von Konfiguration zu Konfiguration variieren kann. Die DLL des Projekts matt kann z. B. mattd.dll und mattd.pdb in der Debugkonfiguration enthalten, aber nur matt.dll in die Einzelhandelskonfiguration einschließen.

Die Gruppen weisen außerdem die gleichen Bezeichnerinformationen auf, z. B. kanonischer Name, Anzeigename und Gruppeninformationen, von der Konfiguration bis zur Konfiguration innerhalb eines Projekts. Diese Konsistenz ermöglicht die Bereitstellung und das Packen, auch wenn sich Die Konfigurationen ändern.

Gruppen können auch über eine Schlüsselausgabe verfügen, mit der Verknüpfungen zum Packen auf etwas Sinnvolles verweisen können. Jede Gruppe kann in einer bestimmten Konfiguration leer sein, daher sollten keine Annahmen über die Größe einer Gruppe getroffen werden. Die Größe (Anzahl der Ausgaben) jeder Gruppe in einer beliebigen Konfiguration kann sich von der Größe einer anderen Gruppe in derselben Konfiguration unterscheiden. Sie kann sich auch von der Größe derselben Gruppe in einer anderen Konfiguration unterscheiden.

Ausgabegruppengrafik

Ausgabegruppen

Die primäre Verwendung der IVsProjectCfg Schnittstelle besteht darin, Zugriff auf Build-, Bereitstellungs- und Debugverwaltungsobjekte zu ermöglichen und Projekten die Freiheit der Gruppierung von Ausgaben zu ermöglichen. Weitere Informationen zur Verwendung dieser Schnittstelle finden Sie unter Project Configuration Object.

Im vorherigen Diagramm verfügt "Group Built" über eine Schlüsselausgabe für Konfigurationen (entweder bD.exe oder b.exe), sodass der Benutzer eine Verknüpfung zu "Erstellt" erstellen und wissen kann, dass die Verknüpfung unabhängig von der bereitgestellten Konfiguration funktioniert. Die Gruppenquelle verfügt nicht über eine Schlüsselausgabe, sodass der Benutzer keine Verknüpfung zu ihr erstellen kann. Wenn die integrierte Debuggruppe über eine Schlüsselausgabe verfügt, aber die integrierte Einzelhandelsgruppe nicht, wäre dies eine falsche Implementierung. Es folgt, dass, wenn eine Konfiguration über eine Gruppe verfügt, die keine Ausgaben enthält, und folglich keine Schlüsseldatei, andere Konfigurationen mit dieser Gruppe, die Ausgaben enthalten, keine Schlüsseldateien enthalten. Die Installer-Editoren gehen davon aus, dass kanonische Namen und Anzeigenamen von Gruppen sowie das Vorhandensein einer Schlüsseldatei nicht basierend auf Konfigurationen geändert werden.

Beachten Sie, dass ein Projekt, das kein Paket IVsOutputGroup oder bereitstellen möchte, diese Ausgabe nicht in eine Gruppe einfügen kann. Die Ausgabe kann weiterhin normal aufgezählt werden, indem die EnumOutputs Methode implementiert wird, die unabhängig von der Gruppierung alle Ausgaben einer Konfiguration zurückgibt.

Weitere Informationen finden Sie in der Implementierung IVsOutputGroup im Beispiel "Benutzerdefiniertes Projekt" bei MPF für Projekte.

Weitere Informationen