Partager via


Exposer des types aux concepteurs visuels

Visual Studio doit avoir accès aux définitions de classe et de type au moment du design afin d’afficher un concepteur visuel. Les classes sont chargées à partir d’un ensemble prédéfini d’assemblys qui incluent le jeu de dépendances complet du projet actuel (références plus leurs dépendances). Il peut également être nécessaire pour les concepteurs visuels d’accéder aux classes et types définis dans les fichiers générés par des outils personnalisés.

Les systèmes de projet Visual Basic et Visual C# prennent en charge l’accès aux classes et types générés par le biais de fichiers exécutables portables temporaires (PEs temporaires). Tout fichier généré par un outil personnalisé peut être compilé dans un assembly temporaire afin que les types puissent être chargés à partir de ces assemblys et exposés aux concepteurs. La sortie de chaque outil personnalisé est compilée dans un PE temporaire distinct, et la réussite ou l’échec de cette compilation temporaire dépend uniquement du fait que le fichier généré peut être compilé ou non. Même si un projet peut ne pas être généré dans son ensemble, les PEs temporaires individuelles peuvent toujours être disponibles pour les concepteurs.

Le système de projet fournit une prise en charge complète du suivi des modifications apportées au fichier de sortie d’un outil personnalisé, à condition que ces modifications soient le résultat de l’exécution de l’outil personnalisé. Chaque fois que l’outil personnalisé est exécuté, un nouveau PE temporaire est généré et les notifications appropriées sont envoyées aux concepteurs.

Remarque

Étant donné que le fichier de génération exécutable du programme temporaire se produit en arrière-plan, aucune erreur n’est signalée à l’utilisateur en cas d’échec de la compilation.

Les outils personnalisés qui tirent parti de la prise en charge temporaire de PE doivent respecter les règles suivantes :

  • GeneratesDesignTimeSource doit être défini sur 1 dans le Registre.

    Aucune compilation de fichier exécutable de programme n’a lieu sans ce paramètre.

  • Le code généré doit se trouver dans le même langage que le paramètre de projet global.

    Le PE temporaire est compilé indépendamment de ce que l’outil personnalisé signale comme extension demandée à DefaultExtension condition que GeneratesDesignTimeSource soit défini sur 1 dans le Registre. L’extension n’a pas besoin d’être .vb, .cs ou .jsl ; il peut s’agir d’une extension.

  • Le code généré par l’outil personnalisé doit être valide et doit être compilé par lui-même à l’aide uniquement de l’ensemble de références présent dans le projet au moment Generate de l’exécution.

    Lorsqu’un PE temporaire est compilé, le seul fichier source fourni au compilateur est la sortie de l’outil personnalisé. Par conséquent, un outil personnalisé qui utilise un PE temporaire doit générer des fichiers de sortie qui peuvent être compilés indépendamment des autres fichiers du projet.