Après quelques recherches et grâce à l'article mentionné par @ Joe Steele, je « ai réussi à brancher l'événement CommandEvents.AfterExecute
, responsable de la création du projet:
DTE application = this.GetService(typeof(SDTE)) as DTE;
string guidVSStd97 = "{5efc7975-14bc-11cf-9b2b-00aa00573819}".ToUpper();
int cmdidNewProject = 216;
this.createCmd = application.Events.CommandEvents[guidVSStd97, cmdidNewProject];
this.createCmd.AfterExecute += this.command_AfterExecute;
Et voici comment le délégué ressemble:
void command_AfterExecute(string Guid, int ID, object CustomIn, object CustomOut)
{
// place your code here
}
Remarques: Probablement la partie la plus difficile
était de trouver le bon guid
et commandId
, mais this article était d'aide.
Parfois, pendant le débogage, l'événement ne se déclenche pas du tout, ce qui m'a fait déconcerté, mais heureusement je me suis tombé sur ce morceau de conseil:
L'objet SolutionEvents peut aller de portée et d'être recueilli avant que la solution est fermée. Pour conserver une référence à cet objet, déclarez une variable privée dans la classe dans laquelle vous implémentez les gestionnaires d'événements de solution.Source
Ainsi l'introduction de la variable privée résolu la question:
private CommandEvents createCmd;
** Je dois exécuter du code C# ** ce que tu veux dire par là? Pouvez-vous s'il vous plaît expliquer dans les détails. Voulez-vous dire que vous voulez exécuter C# cmd/vous voulez insérer le code prédéfini C# dans le projet/vous voulez déclencher un C# exe ou quoi? –
J'ai le code C# qui utilise EnvDTE etc., et je veux ajouter ceci comme fonction ou autre chose qui sera appelée quand le projet est créé. – user3114639
Je ne suis pas sûr, mais essayez si cela peut vous aider. [cliquez sur ce lien] (http://www.codeproject.com/Articles/36219/Exploring-EnvDTE) –