Procédure pas - à - pas : Accès de l'objet DTE d'une extension de l'éditeur
En accédant à l'objet DTE, vous pouvez automatiser Visual Studio de différentes façons. Vous pouvez obtenir l'objet DTE d'un complément Visual Studio en faisant référence à son progid (ou à progID). Pour plus d'informations, consultez Référencement des assemblys d'automation et de l'objet DTE2. En général dans les VSPackages, vous pouvez obtenir l'objet DTE en appelant la méthode d' GetService avec le type de l'objet DTE. Pour plus d'informations, consultez Procédure pas - à - pas : Étendre les VSPackages managé à l'aide de automation. Dans les extensions managées (MEF) managed extensibility framework, vous pouvez importer SVsServiceProvider et appeler la méthode d' GetService avec un type d' DTE.
Composants requis
Pour exécuter cette procédure, vous devez installer Visual Studio 2010 Kit de développement logiciel. Pour plus d'informations sur le kit de développement Visual Studio et comment télécharger le, consultez Centre pour développeurs d'extensibilité Visual Studio sur le site Web MSDN.
Obtention de l'objet DTE
Pour obtenir l'objet DTE du serviceprovider
Créez un projet c# ou du classifieur Visual Basic Editor. Nommez la solution DTETest.
Ajoutez les références d'assembly suivantes au projet. Vous devez accéder à \Visual Studio installation folder\Common7\IDE\PublicAssemblies \.
EnvDTE.dll
EnvDTE80.dll
Microsoft.VisualStudio.Shell.Immutable.10.0
Accédez au fichier de DTETest, puis ajoutez les directives suivantes d' using (instructions d'Imports en Visual Basic).
Imports EnvDTE Imports EnvDTE80 Imports Microsoft.VisualStudio.Shell
using EnvDTE; using EnvDTE80; using Microsoft.VisualStudio.Shell;
Dans la classe d' DTETestProvider , importez SVsServiceProvider.
<Import()> Private ServiceProvider As SVsServiceProvider = Nothing
[Import] internal SVsServiceProvider ServiceProvider = null;
Dans la méthode d' GetClassifier() , ajoutez le code suivant.
Dim dte As DTE dte = CType(ServiceProvider.GetService(GetType(DTE)), DTE)
DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE));
Si vous devez utiliser l'interface d' DTE2 , vous pouvez effectuer un cast de l'objet DTE lui.