"No se ha declarado el nombre 'DTE'" mensaje de error mientras se ejecuta el "método en elemento (extensibilidad general)" código de ejemplo MSDN

Seleccione idioma Seleccione idioma
Id. de artículo: 814722 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Este artículo describe problemas que pueden experimentar al seguir la documentación para el Artículo método (extensibilidad general) que aparece en el siguiente artículo de Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/aa301425(VS.71).aspx
  • Cuando se pega el código de ejemplo en la sección ejemplo del artículo para una aplicación de Visual Basic .NET y, a continuación, intenta compilar el archivo, recibirá el siguiente mensaje de error:
    No se ha declarado el nombre 'DTE'.
  • Cuando intenta asignar el valor devuelto del método EnvDTE.Documents.Item a una variable de tipo de complemento , recibirá el siguiente mensaje de error:
    Error de excepción no controlada del tipo 'System.InvalidCastException' en ApplicationName.exe
    Obtener información adicional: especificar la conversión no es válida.
  • Al pasar un parámetro de objeto al método EnvDTE.Documents.Item , recibirá el siguiente mensaje de error:
    Excepción no controlada del tipo 'System.Runtime.InteropServices.COMException' producido en ApplicationName .exe
    Obtener información adicional: tipo no coincide.

Causa

  • Recibirá el mensaje de error "No está declarado el nombre 'DTE'" porque no se ha declarado la variable denominada DTE en el código de ejemplo que se proporciona en el artículo de MSDN.
  • Recibe el mensaje de error InvalidCastException porque el artículo de MSDN indica que el valor devuelto para el método EnvDTE.Documents.Item es un tipo de complemento . Sin embargo, el método EnvDTE.Documents.Item devuelve un objeto de tipo de documento . Por lo tanto, cuando intenta asignar un objeto de tipo de documento a una variable de tipo de complemento , recibirá el mensaje de error.
  • Recibe el mensaje de error no coincide el tipo cuando intenta pasar un parámetro no es un entero o una cadena al método EnvDTE.Documents.Item . El método EnvDTE.Documents.Item se utiliza para tener acceso a los elementos de la colección EnvDTE.Documents . El método EnvDTE.Documents.Item puede aceptar sólo dos tipos de parámetros:
    • entero - el valor de índice de los documentos en el EnvDTE.Documents colección
    • cadena - para la clave de los documentos de la colección EnvDTE.Documents

Solución

  • Para utilizar la variable denominada DTE, siga estos pasos:
    1. En el Explorador de soluciones, haga clic con el botón secundario en Your Project Name y, a continuación, haga clic en Agregar referencia .
    2. En el cuadro de diálogo Agregar referencia , haga doble clic en envdte y, a continuación, haga clic en Aceptar para agregar una referencia al espacio de nombres EnvDTE al proyecto.
    3. Agregue la siguiente instrucción al principio del archivo de Visual Studio. NET:

      código de ejemplo de Visual Basic .NET
      Imports EnvDTE
      código de ejemplo de Visual C# .NET
      using EnvDTE;
    4. Agregue las siguientes instrucciones al principio del método ItemExample1 :
      código de ejemplo de Visual Basic .NET
      Dim DTE As EnvDTE.DTE
      DTE = System.Runtime.InteropServices.Marshal.GetActiveObject("ProgID")
      código de ejemplo de Visual C# .NET
      EnvDTE.DTE DTE;
      DTE = (EnvDTE.DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("ProgID");
      Nota Reemplazar el ProgID de su objeto EnvDTE ProgID.
  • Para resolver el error InvalidCastException, en lugar de asignar el valor devuelto del método EnvDTE.Documents.Item a una variable de tipo de complemento , asigne el valor devuelto a una variable de tipo de documento .
  • Para resolver el error "No coincide el tipo", sólo hay que pasar un parámetro que es un entero o una cadena al método EnvDTE.Documents.Item .

Estado

Este comportamiento es por diseño.

Más información

Pasos para reproducir el comportamiento

  1. Inicie Visual Studio NET.. Utilice Visual Basic .NET o Visual C# .NET para crear un nuevo proyecto de Aplicación para Windows llamado ItemMethodDemo .
  2. En el Explorador de soluciones, haga clic con el botón secundario del mouse en Form1 y, a continuación, haga clic en Ver código .
  3. Agregue el siguiente código de ejemplo para un método (desde el artículo de MSDN) a Form1:

    código de ejemplo de Visual Basic .NET
    Sub ItemExample1()
       ' Closes all saved documents.
       Dim iDoc As Integer
       For iDoc = 1 To DTE.Documents.Count
          If DTE.Documents.Item(iDoc).Saved Then
             DTE.Documents.Item(iDoc).Close()
          End If
       Next iDoc
    End Sub
    
    Código de ejemplo de Visual C# .NET
    void ItemExample1()
    {
       //Closes all saved documents.
       int iDoc;
       for(iDoc=1;iDoc<DTE.Documents.Count;++iDoc)
       {
          if (DTE.Documents.Item(iDoc).Saved)
          {
             DTE.Documents.Item(iDoc).Close(EnvDTE.vsSaveChanges.vsSaveChangesYes);
          }
       }
    }
  4. En el menú Generar , haga clic en Generar soluciones .

Referencias

Para obtener más información, visite los siguientes sitios Web de Microsoft (pueden estar en inglés):
http://msdn2.microsoft.com/en-us/library/aa301425(VS.71).aspx
http://msdn2.microsoft.com/en-us/library/aa300825(VS.71).aspx
http://msdn2.microsoft.com/en-us/library/aa300820(VS.71).aspx

Propiedades

Id. de artículo: 814722 - Última revisión: jueves, 31 de mayo de 2007 - Versión: 1.5
La información de este artículo se refiere a:
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Palabras clave: 
kbmt kbvs2005doesnotapply kbvs2005swept kberrmsg kbcollections kbprb kbhelp kbenv kbautomation kbdocs kbcominterop kbmarshal kbdocfix kbdocerr KB814722 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 814722

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com