Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Mise à jour : novembre 2007
Il peut parfois être utile de créer par programme une instance de Visual Studio ou un d'effectuer un attachement à une instance spécifique de Visual Studio qui est déjà en cours d'exécution. Si deux instances de Visual Studio sont exécutées sur un système et si la même solution est ouverte pour les deux (par exemple, une instance génère une solution tandis que l'autre débogue une génération), vous pouvez programmer votre complément de sorte qu'il différencie les deux.
Vous pouvez, par exemple, effectuer les opérations suivantes :
démarrer une instance de Visual Studio basée sur un chemin d'accès à un fichier ou à une solution ;
effectuer un attachement à une instance de Visual Studio basée sur un chemin d'accès à un fichier ou à une solution ;
charger un fichier ou une solution dans une instance existante de Visual Studio ;
créer une instance de Visual Studio qui s'arrête dans les conditions suivantes :
créer une instance de Visual Studio qui reste chargée même dans les conditions suivantes :
Les objets retournés peuvent être castés en leurs objets respectifs, tels que DTE2 et Solution2.
Remarque : |
|---|
Selon vos paramètres actifs ou votre édition, les boîtes de dialogue et les commandes de menu que vous voyez peuvent différer de celles qui sont décrites dans l'aide. Ces procédures ont été développées avec les paramètres de développement généraux actifs. Pour modifier vos paramètres, sélectionnez Importer et ExporterParamètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio. |
Exemple
Pour créer une instance de Visual Studio, utilisez la fonction CreateObject (voir CreateObject, fonction (Visual Basic)) ou System.Activator.CreateInstance. Lorsque vous utilisez la fonction CreateObject dans Visual Basic, vous pouvez passer des valeurs de "VisualStudio.DTE.8.0" ou de "VisualStudio.Solution.8.0." Les exemples ci-après illustrent ces trois méthodes.
' CreateObject method 1 - VisualStudio.DTE.8.0.
Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
_applicationObject = CType(application, DTE2)
_addInInstance = CType(addInInst, AddIn)
CreateNewInstance1(_applicationObject)
End Sub
Private Sub CreateNewInstance1(ByVal dte As DTE2)
Dim inst As Object
Dim dte80Obj As EnvDTE80.DTE2
inst = Microsoft.VisualBasic.Interaction. _
CreateObject("VisualStudio.DTE.8.0", "")
dte80Obj = CType(inst, EnvDTE80.DTE2)
MsgBox(dte80Obj.DisplayMode.ToString)
End Sub
' CreateObject method 2 - VisualStudio.Solution.8.0.
Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
_applicationObject = CType(application, DTE2)
_addInInstance = CType(addInInst, AddIn)
CreateNewInstance2(_applicationObject)
End Sub
Private Sub CreateNewInstance2(ByVal dte As DTE2)
Dim inst As Object
Dim dte80Obj As EnvDTE80.DTE2
inst = Microsoft.VisualBasic.Interaction. _
CreateObject("VisualStudio.Solution.8.0", "")
dte80Obj = CType(inst, EnvDTE80.DTE2)
MsgBox(dte80Obj.DisplayMode.ToString)
End Sub
' GetTypeFromProgID and CreateInstance method.
Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
_applicationObject = CType(application, DTE2)
_addInInstance = CType(addInInst, AddIn)
CreateNewInstance3(_applicationObject)
End Sub
Private Sub CreateNewInstance3(ByVal dte As DTE2)
Dim Type As System.Type
Dim inst As Object
Dim dte80Obj As EnvDTE80.DTE2
Type = System.Type.GetTypeFromProgID("VisualStudio.DTE.8.0")
inst = System.Activator.CreateInstance(Type, True)
dte80Obj = CType(inst, EnvDTE80.DTE2)
MsgBox(dte80Obj.DisplayMode.ToString)
End Sub
public void OnConnection(object application, ext_ConnectMode
connectMode, object addInInst, ref Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
CreateNewInstance3(_applicationObject);
}
private void CreateNewInstance3(DTE2 dte)
{
System.Type Type;
object inst;
EnvDTE80.DTE2 dte80Obj;
Type = System.Type.GetTypeFromProgID("VisualStudio.DTE.8.0");
inst = System.Activator.CreateInstance(Type, true);
dte80Obj = (EnvDTE80.DTE2)inst;
System.Windows.Forms.MessageBox.Show
(dte80Obj.DisplayMode.ToString());
}
// Create a new instance of Visual Studio by using
// GetTypeFromProgID and CreateInstance.
private void CreateNewInstance1()
{
System.Type type = System.Type.GetTypeFromProgID
("VisualStudio.DTE.8.0");
Object obj = System.Activator.CreateInstance(type, true);
EnvDTE80.DTE2 dte8Obj = (EnvDTE80.DTE2)obj;
}
Dans l'exemple Visual Basic, les deux instructions créent une instance de l'IDE Visual Studio. La première instruction crée une instance directement, tandis que la seconde crée une instance en créant une nouvelle solution.
Pour établir une référence à une instance existante de l'IDE Visual Studio, vous pouvez utiliser la fonction GetObject (voir GetObject, fonction (Visual Basic)). Vous pouvez utiliser l'une ou l'autre de ces deux instructions :
Private Sub GetInstance1 ()
Dim inst As Object
Dim dte80Obj As EnvDTE80.DTE2
inst = Microsoft.VisualBasic.Interaction.GetObject(, _
"VisualStudio.DTE.8.0")
dte80Obj = CType(inst, EnvDTE80.DTE2)
MsgBox(dte80Obj.DisplayMode.ToString)
End Sub
' -or-
Dim inst As Object
inst = Microsoft.VisualBasic.Interaction.GetObject(, _
"VisualStudio.Solution.8.0")
' ---------------------------
' -or-
' Change the path to your application.
Dim inst As Object
inst = Microsoft.VisualBasic.Interaction.GetObject _
("C:\Projects\WindowsApplication1\WindowsApplication1.sln")
' ---------------------------
' -or-
' Change the path to your application.
Dim inst As Object
inst = Microsoft.VisualBasic.Interaction.GetObject _
("C:\Projects\WindowsApplication1\WindowsApplication1.sln", _
"VisualStudio.Solution.8.0")
Remarque :