Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. |
Traducción
Original
|
BadImageFormatException (Clase)
Excepción que se inicia cuando la imagen de archivo de una biblioteca de vínculos dinámicos (DLL) o de un programa ejecutable no es válida.
Ensamblado: mscorlib (en mscorlib.dll)
El tipo BadImageFormatException expone los siguientes miembros.
| Nombre | Descripción | |
|---|---|---|
|
BadImageFormatException() | Inicializa una nueva instancia de la clase BadImageFormatException. |
|
BadImageFormatException(String) | Inicializa una nueva instancia de la clase BadImageFormatException con un mensaje de error especificado. |
|
BadImageFormatException(SerializationInfo, StreamingContext) | Inicializa una nueva instancia de la clase BadImageFormatException con datos serializados. |
|
BadImageFormatException(String, Exception) | Inicializa una nueva instancia de la clase BadImageFormatException con un mensaje de error especificado y una referencia a la excepción interna que representa la causa de esta excepción. |
|
BadImageFormatException(String, String) | Inicializa una nueva instancia de la clase BadImageFormatException con el mensaje de error y el nombre de archivo especificados. |
|
BadImageFormatException(String, String, Exception) | Inicializa una nueva instancia de la clase BadImageFormatException con un mensaje de error especificado y una referencia a la excepción interna que representa la causa de esta excepción. |
| Nombre | Descripción | |
|---|---|---|
|
Data | Obtiene una colección de pares de clave y valor que proporcionan información adicional definida por el usuario acerca de la excepción. (Se hereda de Exception). |
|
FileName | Obtiene el nombre del archivo que causa esta excepción. |
|
FusionLog | Obtiene el archivo de registro que describe el motivo por el que no se ha podido cargar un ensamblado. |
|
HelpLink | Obtiene o establece un vínculo al archivo de ayuda asociado a esta excepción. (Se hereda de Exception). |
|
HResult | Obtiene o establece HRESULT, un valor numérico codificado que se asigna a una excepción específica. (Se hereda de Exception). |
|
InnerException | Obtiene la instancia Exception que produjo la excepción actual. (Se hereda de Exception). |
|
Message |
Obtiene el mensaje de error y el nombre del archivo que ha causado esta excepción.
(Invalida a Exception.Message). En XNA Framework 3.0, este miembro se hereda de Exception.Message. En , este miembro se hereda de Exception.Message. |
|
Source | Devuelve o establece el nombre de la aplicación o del objeto que generó el error. (Se hereda de Exception). |
|
StackTrace | Obtiene una representación de cadena de los marcos inmediatos en la pila de llamadas. (Se hereda de Exception). |
|
TargetSite | Obtiene el método que produjo la excepción actual. (Se hereda de Exception). |
| Nombre | Descripción | |
|---|---|---|
|
Equals(Object) | Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object). |
|
Finalize | Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object). |
|
GetBaseException | Cuando se reemplaza en una clase derivada, devuelve la clase Exception que representa la causa principal de una o más excepciones posteriores. (Se hereda de Exception). |
|
GetHashCode | Actúa como función hash para un tipo concreto. (Se hereda de Object). |
|
GetObjectData | Establece el objeto SerializationInfo con el nombre del archivo, el registro de la caché de ensamblados y la información adicional de la excepción. (Invalida a Exception.GetObjectData(SerializationInfo, StreamingContext)). |
|
GetType |
Obtiene el tipo en tiempo de ejecución de la instancia actual.
(Se hereda de Exception). En XNA Framework 3.0, este miembro se hereda de Object.GetType(). En , este miembro se hereda de Object.GetType(). |
|
MemberwiseClone | Crea una copia superficial del objeto Object actual. (Se hereda de Object). |
|
ToString |
Devuelve el nombre completo de esta excepción y, posiblemente, el mensaje de error, el nombre de la excepción interna y el seguimiento de la pila.
(Invalida a Exception.ToString()). En XNA Framework, este miembro está invalidado por ToString(). En , este miembro está invalidado por ToString(). |
| Nombre | Descripción | |
|---|---|---|
|
SerializeObjectState | Se produce cuando se serializa una excepción para crear un objeto de estados de excepción que contiene datos serializados sobre la excepción. (Se hereda de Exception). |
Se produce esta excepción cuando el formato de archivo de una biblioteca de vínculos dinámicos(archivo .dll) o una aplicación ejecutable (archivo .exe) no cumple con el formato que espera Common Language Runtime. En concreto, se produce una excepción en las condiciones siguientes:
-
Una versión anterior de una utilidad .NET Framework, como ILDasm.exe o installutil.exe, se utiliza con un ensamblado que se desarrolló con una versión posterior de .NET Framework.
Para resolver esta excepción, utilice la versión de la herramienta que corresponde a la versión de .NET Framework utilizada para desarrollar el ensamblado. Esto puede requerir modificar la variable de entorno Path o proporcionar una ruta de acceso completa a la aplicación ejecutable correcta.
-
Un intento se realiza para cargar una biblioteca de vínculos dinámicos no administrada o aplicación ejecutable (como una DLL de sistema de Windows) como si fuera un ensamblado de .NET Framework. En el ejemplo siguiente se muestra esto utilizando el método Assembly.LoadFilepara cargar Kernel32.dll.
// Windows DLL (non-.NET assembly) string filePath = Environment.ExpandEnvironmentVariables("%windir%"); if (! filePath.Trim().EndsWith(@"\")) filePath += @"\"; filePath += @"System32\Kernel32.dll"; try { Assembly assem = Assembly.LoadFile(filePath); } catch (BadImageFormatException e) { Console.WriteLine("Unable to load {0}.", filePath); Console.WriteLine(e.Message.Substring(0, e.Message.IndexOf(".") + 1)); } // The example displays an error message like the following: // Unable to load C:\WINDOWS\System32\Kernel32.dll. // The module was expected to contain an assembly manifest.
Para resolver esta excepción, tenga acceso a los métodos definidos en la DLL utilizando las características proporcionadas por el lenguaje de desarrollo que está usando, como la instrucción Declare en Visual Basic o el atributo DllImportAttribute con la palabra clave extern en C#.
-
Una DLL o aplicación ejecutable se carga como un ensamblado de 64 bits, pero contiene características o recursos de 32 bits. Por ejemplo, usa la interoperabilidad COM o llama a métodos en una biblioteca de vínculos dinámicos de 32 bits.
Para resolver esta excepción, establezca la propiedad de Destino de la plataforma del proyecto en x86 (en lugar de x64 o AnyCPU) y vuelva a compilar.
-
Los componentes se han creado utilizando versiones diferentes de .NET Framework. Normalmente, esta excepción se produce cuando una aplicación o componente que se desarrolló utilizando .NET Framework 1.0 o .NET Framework 1.1 intenta cargar un ensamblado que se desarrolló mediante .NET Framework 2.0 SP1 o posterior, o cuando una aplicación que se desarrolló utilizando .NET Framework 2.0 SP1 o .NET Framework 3.5 intenta cargar un ensamblado que se desarrolló mediante .NET Framework 4. BadImageFormatException se puede notificar como un error en tiempo de compilación o se puede producir la excepción en tiempo de ejecución. En el ejemplo siguiente se muestra este escenario. Define una clase StringLib que tiene un miembro único, ToProperCase, y que reside en un ensamblado denominado StringLib.dll.
using System; public class StringLib { private string[] exceptionList = { "a", "an", "the", "in", "on", "of" }; private char[] separators = { ' ' }; public string ToProperCase(string title) { bool isException = false; string[] words = title.Split( separators, StringSplitOptions.RemoveEmptyEntries); string[] newWords = new string[words.Length]; for (int ctr = 0; ctr <= words.Length - 1; ctr++) { isException = false; foreach (string exception in exceptionList) { if (words[ctr].Equals(exception) && ctr > 0) { isException = true; break; } } if (! isException) newWords[ctr] = words[ctr].Substring(0, 1).ToUpper() + words[ctr].Substring(1); else newWords[ctr] = words[ctr]; } return String.Join(" ", newWords); } } // Attempting to load the StringLib.dll assembly produces the following output: // Unhandled Exception: System.BadImageFormatException: // The format of the file 'StringLib.dll' is invalid.
En el ejemplo siguiente se utiliza la reflexión para cargar un ensamblado denominado StringLib.dll. Si el código fuente se compila con un compilador .NET Framework 1.1, el método Assembly.LoadFrom produce BadImageFormatException.
using System; using System.Reflection; public class Example { public static void Main() { string title = "a tale of two cities"; // object[] args = { title} // Load assembly containing StateInfo type. Assembly assem = Assembly.LoadFrom(@".\StringLib.dll"); // Get type representing StateInfo class. Type stateInfoType = assem.GetType("StringLib"); // Get Display method. MethodInfo mi = stateInfoType.GetMethod("ToProperCase"); // Call the Display method. string properTitle = (string) mi.Invoke(null, new object[] { title } ); Console.WriteLine(properTitle); } }
Para resolver esta excepción, asegúrese de que el ensamblado del que se produce la excepción intenta cargar un ensamblado desarrollado mediante una versión compatible de .NET Framework.
BadImageFormatException utiliza HRESULT COR_E_BADIMAGEFORMAT, que tiene el valor 0x8007000B.
Para obtener una lista con los valores iniciales de las propiedades de una instancia de BadImageFormatException, vea los constructores BadImageFormatException.
Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2
.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.