Puede recibir un mensaje de error "System.Resources.MissingManifestResourceException" al tener acceso al archivo .Resources del formulario en tiempo de ejecución

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

En esta página

Síntomas

Cuando se ejecutan su Visual Basic .NET o Visual Basic 2005, Visual C# .NET o aplicación Windows en Visual J# .NET, puede aparecer el siguiente mensaje de error o uno similar cuando carga un formulario:
Error de excepción no controlada del tipo 'System.Resources.MissingManifestResourceException' en mscorlib.dll

Obtener información adicional: no se encontró los recursos adecuados para la referencia cultural especificada (o la referencia cultural neutra) en el ensamblado especificado. Asegúrese de que "Form1.resources" correctamente fue ensamblado incrustado o vinculado en "myApplication".

baseName: locationInfo de Form1: nombre de archivo de recursos WindowsApplication4.Form1: ensamblado Form1.Resources: myApplication, versión = 1.0.781.33026, Culture = neutral, PublicKeyToken = null
Si hace clic en salto en el cuadro de diálogo de error y si está ejecutando el código en el entorno de desarrollo integrado (IDE), descubre que una línea de código dentro de la instrucción InitializeComponent provoca este problema. Por ejemplo, si crea en el ejemplo de la sección "Más información", este error se produce junto con un control ImageList . Aunque el mensaje de error puede hacer referencia a un control diferente, observe que resources.GetObject aparece en esa línea de código en el mensaje de error:
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));

Causa

Este problema se produce porque la clase de formulario no es la primera clase en el módulo de código del formulario.

Nota Este específicos de un artículo documentos causa de este problema. Puede haber otras situaciones que pueden conducir a resultados similares.

Solución

Para resolver este problema, mueva todos las definiciones de clase para que aparezcan después de definición de clase del formulario.

Solución

Para evitar este problema, cambie la propiedad Nombre de archivo de recursos del archivo .resx del proyecto. Para ello, siga estos pasos:
  1. Inicie Visual Studio .NET 2003 o Visual Studio 2005 .
  2. Abra el proyecto que contiene la clase de formulario localizada que recibirá la mensaje de error que se menciona en la sección "Síntomas".
  3. En el Explorador de soluciones, expanda todas las carpetas.
  4. Haga clic con el botón secundario del mouse en Form1.resx y, a continuación, haga clic en Propiedades .
  5. En el cuadro de diálogo Páginas de propiedades de Form1.resx , expanda Propiedades de configuración y, a continuación, haga clic en General en Recursos administrados .
  6. Cambie la propiedad de Nombre de archivo de recursos de $(IntDir)/ <placeholder>. Form1.resources a $ (IntDir) / <placeholder>.MyForm .resources y, a continuación, haga clic en Aceptar .

    Nota MyForm es un marcador de posición para el nombre de clase de la clase de formulario que adapta.
  7. Presione CTRL + MAYÚS + S para guardar el proyecto. Presione CTRL + MAYÚS + B para generar la solución.Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    824495REVISIÓN: Recibe un mensaje de error "MissingManifestResourceException" cuando se agrega un recurso vinculado en Visual Studio .NET 2003
  8. Presione F5 para ejecutar la aplicación. Se ejecute la aplicación y el formulario se muestra de Form1.
.

Estado

Este comportamiento es por diseño.

Más información

Un módulo de código de formulario puede contener varias clases. Cuando se genera el proyecto, el sistema de compilación debe decidir qué clase debe utilizar para crear el archivo ".resources". El diseño del sistema de generación del proyecto especifica que la primera clase en el módulo de código es la clase en el que se basa el archivo .resources. El archivo .resources se denomina según a esa clase, no el nombre del formulario. En la mayoría de los casos, estos dos nombres son los mismos. Sin embargo, si estos nombres son diferentes, recibirá el mensaje de error que se menciona en la sección "Síntomas".

Cuando se carga el formulario en tiempo de ejecución, el método InitializeComponent que tenga que obtener objetos desde el archivo ".resources". InitializeComponent busca el archivo .resources Form_Name del ensamblado. Porque el archivo .resources de Form_Name inicial nunca se ha creado o vinculado al ensamblado, el intento de recuperar el archivo .resources produce un error.

Pasos para reproducir el comportamiento

  1. Crear un proyecto de aplicación para Windows en Visual Basic .NET o en Visual Basic 2005, Visual C# .NET o Visual J#. NET. De forma predeterminada. Nota en Visual Studio 2005 se crea Form1, recibirá el mensaje de advertencia siguiente:
    No se puede agregar componentes en modo de localización. Seleccione (predeterminado) en la propiedad Language para volver al formulario predeterminado y agregar componentes.
    Nota Debe cambiar el código en Visual Basic 2005. De forma predeterminada, Visual Basic crea dos archivos para el proyecto cuando se crea un proyecto de formularios Windows Forms. Si el formulario se denomina Form1, los dos archivos que representan el formulario se denominan Form1.vb y Form1.Designer.vb. Escribir el código en el archivo Form1.vb. El Diseñador de Windows Forms escribe el código en el archivo Form1.Designer.vb. El Diseñador de Windows Forms se utiliza la palabra clave partial para dividir la implementación de Form1 en dos archivos independientes. Este comportamiento evita que el código generado por diseñador se mezcle suyo con su código.

    Para obtener más información acerca de las nuevas mejoras del lenguaje Visual Basic 2005, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
    http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
    Para obtener más información acerca de las clases parciales y el Diseñador de Windows Forms, visite el siguiente sitio Web de MSDN:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  2. Agregue un control ImageList a Form1.
  3. Agregar un archivo de icono en el control ImageList .
  4. En el módulo de código de Form1, agregue el código siguiente antes de la definición de Form1: Visual Basic. NET:
    Public Class someClass
    End Class
    					
    Visual C# .NET y Visual J#. NET:
    public class someClass
    {
    }
    					
  5. Genere el proyecto. Observe que el proyecto se genera correctamente.
  6. Ejecute el proyecto. Observe que recibe el mensaje de error que se menciona en la sección "Síntomas".

Propiedades

Id. de artículo: 318603 - Última revisión: viernes, 11 de mayo de 2007 - Versión: 4.3
La información de este artículo se refiere a:
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Palabras clave: 
kbmt kbvs2005applies kbvs2005swept kbprb KB318603 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): 318603

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