2010-05-19 4 views
7

Je crée un package VS et j'essaye d'envoyer une commande du package à Visual Studio pour ouvrir un fichier sélectionné par l'utilisateur dans un nouvel onglet (comme un utilisateur le ferait en allant dans Fichier -> Ouvrir ...). Je me souviens avoir vu à un moment donné comment faire cela. Quelqu'un peut-il me rafraîchir la mémoire?Par programme ouvrir un fichier dans Visual Studio (2010)

Répondre

7

Je crois que vous voulez un de:

  1. IVsUIShellOpenDocument.OpenStandardEditor
  2. DTE.OpenFile
  3. DTE.ItemOperations.OpenFile

En fin de compte, je pense qu'ils se résument toutes au même comportement.

+0

Salut Chris ... Je ne comprends pas. Mon objet DTE n'a aucune de ces méthodes. Et si j'essaye de créer un nouvel objet DTE, cela me donne une erreur. Aucune suggestion? – Andrei

+0

De quels assemblages faites-vous référence (c'est-à-dire d'où vient votre type 'DTE')? Les objets 'DTE' mentionnés ci-dessus proviennent de EnvDTE.dll, essayez donc d'ajouter une référence à cela. Quelle est l'erreur que vous obtenez en essayant de créer un nouvel objet 'DTE'? Est-ce une erreur de compilation ou d'exécution? –

+1

Je fais référence à tous les assemblages ENVDTE80/100. L'erreur est la compilation: Impossible de créer une instance de la classe abstraite ou de l'interface 'EnvDTE80.DTE2' De plus, je cours cela dans un paquet VS (puisque je construis un paquet VS). – Andrei

7

J'utiliser comme vous pouvez tester la commande dans la fenêtre de commande VS

Dans ce cas ExecuteCommand (« File.OpenFile »)

Vous pouvez ajouter la méthode DTE ExecuteCommand (« commandName ») paramètres à la commande dans un deuxième paramètre de chaîne facultatif si vous le souhaitez.

+0

D'une certaine manière, je ne peux pas trouver cette méthode. Est-il toujours disponible dans .NET 4? – Andrei

+0

Je viens de créer un addin dans VS2010 - le modèle crée une variable privée: private DTE2 _applicationObject; Vous pouvez obtenir l'ExecuteCommand à partir de là ... – philhobgen

+0

Ah, oui, je vois ce que vous voulez dire. La chose était que maintenant je construis un paquet Visual Studio. Je peux également créer un complément Visual Studio, mais ensuite, comment créer une instance du complément, que je peux utiliser dans le package VS, mais le complément conserve son _applicationObject. J'espère que vous comprenez ce que je veux dire, c'est en quelque sorte comme utiliser l'objet add-in (_applicationObject) à partir d'une application WinForms. – Andrei

Questions connexes