2010-05-19 14 views
7

Estoy creando un paquete VS, y estoy tratando de enviar un comando del paquete a Visual Studio para abrir un archivo seleccionado por el usuario en una pestaña nueva (al igual que un usuario lo haría yendo a Archivo -> Abrir ...).Abrir un archivo mediante programación en Visual Studio (2010)

Recuerdo haber visto en algún momento cómo hacerlo. ¿Alguien puede actualizar mi memoria?

Respuesta

7

Creo que usted quiere uno de:

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

Al final, creo que todas se reducen a la misma conducta.

+0

Hola Chris ... No lo entiendo. Mi objeto DTE no tiene ninguno de estos métodos. Y si trato de crear un nuevo objeto DTE, me da un error. ¿Alguna sugerencia? – Andrei

+0

¿A qué ensamblados hace referencia (es decir, de dónde viene su tipo 'DTE'? Los objetos 'DTE' mencionados anteriormente provienen de EnvDTE.dll, así que intente agregar una referencia a eso. ¿Cuál es el error que obtienes al intentar crear un nuevo objeto 'DTE'? ¿Es un error en tiempo de compilación o en tiempo de ejecución? –

+1

Me refiero a todos los ensamblajes ENVDTE80/100. El error es el tiempo de compilación: No se puede crear una instancia de la clase abstracta o la interfaz 'EnvDTE80.DTE2' También estoy ejecutando esto en un paquete VS (ya que estoy compilando un paquete VS). – Andrei

7

me gusta usar el método DTE ExecuteCommand ("CommandName") como se puede probar el comando en la ventana de comandos VS

En este caso ExecuteCommand ("File.OpenFile")

Puede añadir parámetros para el comando en un segundo parámetro de cadena opcional si lo desea.

+0

De alguna manera no puedo encontrar este método. ¿Todavía está disponible en .NET 4? – Andrei

+0

Acabo de crear un complemento en VS2010 - la plantilla crea una variable privada: private DTE2 _applicationObject; Puede obtener el ExecuteCommand desde allí ... – philhobgen

+0

Ah, sí, entiendo a qué se refiere. El problema es que ahora estoy creando un paquete de Visual Studio. También puedo crear un complemento de Visual Studio, pero entonces, ¿cómo crearía una instancia del complemento, que puedo usar en el paquete VS, pero el complemento aún conservaría su _applicationObject? Espero que entiendas lo que quiero decir, de alguna manera es como usar el objeto de complemento (_applicationObject) desde una aplicación WinForms. – Andrei

Cuestiones relacionadas