quand je fais:Fixation aux instances spécifiques de l'IDE
// Get an instance of the currently running Visual Studio IDE.
EnvDTE80.DTE2 dte2;
dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.
GetActiveObject("VisualStudio.DTE.10.0");
var solution = dte2.Solution; // get solution
Console.WriteLine(solution.FullName); // prints the name of the solution where this code is written
Je suis en mesure d'obtenir une instance de l'ide actuelle
Je voudrais obtenir une référence à ETTD2 de une instance différente de studio visuel si. This link indique qu'il est possible de le faire. En conséquence, j'ai essayé quelque chose comme:
Process p = new Process();
ProcessStartInfo ps = new ProcessStartInfo(@"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe");
p.StartInfo = ps;
p.Start(); // start a new instance of visual studio
var ROT = "!VisualStudio.DTE.10.0:" + p.Id;
// Get an instance of the NEW instance of Visual Studio IDE.
EnvDTE80.DTE2 dte2;
dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.
GetActiveObject(ROT);
Si je tente que je reçois l'exception:
chaîne de classe non valide (Exception de HRESULT: 0x800401F3 (CO_E_CLASSSTRING))
Il y a plus de liens qui montrent comment faire ce que je cherche mais pour une raison quelconque je ne peux pas le faire fonctionner. Voici quelques-unes des liens:
http://msdn.microsoft.com/en-us/library/6cefss65.aspx
http://msdn.microsoft.com/en-us/library/ms228755.aspx
Quelqu'un at-il remarqué à quel point « GetActiveObject » ne revient pas toujours instance actuelle de VS mais plutôt l'instance, en dehors de l'ensemble actuel d'instances ouvertes, qui a été ouverte en premier. –