Magnot
Messages postés7Date d'inscriptionvendredi 20 août 2004StatutMembreDernière intervention17 mars 2006
-
19 févr. 2006 à 04:17
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
20 févr. 2006 à 22:03
Salut,
Je ne sais pas s'il est possible, lors de l'execution d'un programme, de faire un appel "dynamique" à une macro.
Mon programme est écrit en CSharp et ma macro ... en VB ....
Je souhaite juste, à un moment donné de l'execution de mon programme, faire appel à une macro.
J'ai pensé à mettre en référence la macro mais je ne pense pas que cela se fasse, en tout cas je n'ai pas réussi à trouver comment.
Si quelqu'un avait une idée ou avait déjà essayé de faire quelque chose dans le genre ca pourrait vraiment m'aider.
Magnot
Messages postés7Date d'inscriptionvendredi 20 août 2004StatutMembreDernière intervention17 mars 2006 19 févr. 2006 à 12:35
Oui, pardon, petit oublie ...
Je travail sous VisualStudio.net 2003 framework 1.1
Il permet de réaliser des macros en VB s'interfaçant avec l'environnement VisualStudio.
Ma macro me sert à récuperer le chemin de la solution courante ouverte dans VisualStudio et a la compiler.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 19 févr. 2006 à 14:24
Je ne sais pas si un service permet ce genre de chose (voir propriété Site et IServiceProvider.GetService), mais tu devrais y arriver en manipulant le modèle objet de Visual Studio.
De la même manière que tu le fais dans la macro d'ailleurs, tu pourras donc probablement la remplacer par l'execution des actions directement dans le code lui même.
Pour y accèder tu dois ajouter la référence à envdte.
L'initialisation se fait comme ceci :
private EnvDTE.DTE _dte; ...
this._dte = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.7.1");
Magnot
Messages postés7Date d'inscriptionvendredi 20 août 2004StatutMembreDernière intervention17 mars 2006 19 févr. 2006 à 15:38
En fait, cette action la me renvoi le repertoire du programme executant, ce n'est pas exactement ce que je veux.
Je vais un peux plus decrire ce que je cherche à faire :
En plus des macros, VisualStudio propose de pouvoir créer des "ADDINS". (c'est mon programme en CSharp)
J'ai créé mon propre addin qui s'integre dans l'environnement VisualStudio, donc je peux l'appeler à n'importe quel moment, quelle que soit la solution ouverte dans VisualStudio.
L'intérêt de cet addin est de pouvoir recuperer le repertoire de la solution actuellement ouverte dans VisualStudio (pas le repertoire de l'addin mais de la solution) afin de compiler cette solution, recuperer la dll générée et l'envoyer via le .netremoting vers le repository.
J'aurais du preciser tout cela au début, désolé....
Et je n'ai pas réussi à faire autrement que d'utiliser une macro pour réaliser cette action. Cela me parait bizarre mais bon ...
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 19 févr. 2006 à 16:13
Ah oui, ça c'est une précision importante lol
Sinon tu as dû te tromper quelquepart dans ton code, car le code suivant (en ouvrant VS via le fichier sln) affiche le path du sln, lance la compilation et lance la sortie sans debug :
public void OnStartupComplete(ref System.Array custom)
{
if ( this.applicationObject.Solution.IsOpen )
{
try
{
// affichage du path du fichier sln
System.Windows.Forms.MessageBox.Show(
string.Format("Compilation de "{0}"", this.applicationObject.Solution.FullName)
);