Typen in visuellen Designern verfügbar machen
Visual Studio muss der Zugriff auf die Klasse und Typdefinitionen zur Entwurfszeit haben, dass ein visueller Designer anzuzeigen. Klassen werden von einem vordefinierten Satz von Assemblys geladen, die die komplexe Abhängigkeiten enthalten, die aus dem aktuellen Projekt festgelegt ist (Verweise sowie die zugehörigen Abhängigkeiten). Es ist möglicherweise auch erforderlich für visuelle Designer, Klassen und Typen zuzugreifen, die in benutzerdefinierten Tools generierten Dateien definiert sind.
Die Visual Basic und Visual C# Projektsysteme bieten Unterstützung für den Zugriff auf generierten Klassen und Typen durch temporäre portierbare ausführbare Dateien (temporäre PE-Datei). Jede Datei, die durch ein benutzerdefiniertes Tool generiert wird, kann in eine temporäre Assembly kompiliert werden, sodass Typen von diesen Assemblys geladen werden und Designern verfügbar gemacht werden können. Die Ausgabe eines benutzerdefinierten Tools ist in einem separaten temporäre PE-Datei kompiliert, und der Erfolg oder Fehler der temporären Kompilierung nur hängt davon ab, ob die generierte Datei kompiliert werden kann. Obwohl ein Projekt möglicherweise nicht als Ganzes erstellt, ist möglicherweise einzelnes temporäre PE-Datei es Designern verfügbar.
Das Projektsystem bietet vollständige Unterstützung für das Verfolgen von Änderungen in der Ausgabedatei eines benutzerdefinierten Tools, vorausgesetzt, dass diese Änderungen das Ergebnis der Ausführung des benutzerdefinierten Tools sind. Jedes Mal, wenn das benutzerdefinierte Tool ausgeführt wird, wird eine neue temporäre PE-Datei generiert, und die entsprechenden Benachrichtigungen werden in Designern gesendet.
Hinweis
Da Generierungs ausführbare Datei des temporären Programms im Hintergrund stattfindet, werden keine Fehler an den Benutzer ausgegeben, wenn die Kompilierung schlägt fehl.
Benutzerdefinierte Tools, die temporäre PE-Unterstützung nutzen, müssen die folgenden Regeln einhalten:
GeneratesDesignTimeSource muss bis 1 in der Registrierung festgelegt werden.
Keine ausführbaren Programms der Kompilierung ohne diese Einstellung findet statt.
Der generierte Code muss in derselben Sprache wie die globale Projekteinstellung sein.
Das temporäre PE-Datei kompiliert wird, unabhängig davon, welche benutzerdefinierten Tool meldet als die angeforderte Erweiterung in DefaultExtension , vorausgesetzt, dass GeneratesDesignTimeSource bis 1 in der Registrierung festgelegt ist. Die Erweiterung muss keine .cs, .vb oder .jsl sein. Es kann eine beliebige Erweiterung sein.
Der Code, der vom benutzerdefinierten Tool generiert wird, muss gültig sein, und er muss eigenständig nur mit dem Satz von Verweisen kompilieren, die im Projekt enthalten sind Generate zum Zeitpunkt der Beendigung ausgeführt.
Wenn eine temporäre PE-Datei kompiliert wird, ist die einzige Quelldatei, die den Compiler bereitgestellte die benutzerdefinierte Tools. Daher muss ein benutzerdefiniertes Tool, das eine temporäre PE-Datei verwendet, Ausgabedateien generiert werden, die unabhängig von anderen Dateien des Projekts kompiliert werden kann.
Siehe auch
Konzepte
Einführung in das BuildManager-Objekt
Einzeldateie Generatoren implementieren