|
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
|
Übersetzung
Original
|
BadImageFormatException-Klasse
Namespace: System
Assembly: mscorlib (in mscorlib.dll)
Der BadImageFormatException-Typ macht die folgenden Member verfügbar.
| Name | Beschreibung | |
|---|---|---|
![]() ![]() ![]() ![]() | BadImageFormatException() | |
![]() ![]() ![]() ![]() | BadImageFormatException(String) | |
![]() | BadImageFormatException(SerializationInfo, StreamingContext) | |
![]() ![]() ![]() ![]() | BadImageFormatException(String, Exception) | |
![]() ![]() ![]() | BadImageFormatException(String, String) | |
![]() ![]() ![]() | BadImageFormatException(String, String, Exception) |
| Name | Beschreibung | |
|---|---|---|
![]() ![]() ![]() | Data | |
![]() ![]() ![]() | FileName | |
![]() | FusionLog | |
![]() ![]() ![]() | HelpLink | |
![]() ![]() ![]() ![]() | HResult | |
![]() ![]() ![]() ![]() | InnerException | |
![]() ![]() | Message | In XNA Framework 3.0 wird dieser Member von Exception geerbt..Message. |
![]() ![]() ![]() | Source | |
![]() ![]() ![]() ![]() | StackTrace | |
![]() | TargetSite |
| Name | Beschreibung | |
|---|---|---|
![]() ![]() ![]() ![]() | Equals(Object) | |
![]() ![]() ![]() ![]() | Finalize | |
![]() ![]() ![]() ![]() | GetBaseException | |
![]() ![]() ![]() ![]() | GetHashCode | |
![]() | GetObjectData | |
![]() ![]() ![]() ![]() | GetType | In XNA Framework 3.0 wird dieser Member von Object geerbt..GetType(). In Portable Klassenbibliothek Portable Klassenbibliothek wird dieser Member von Object geerbt..GetType(). In .NET für Windows Store-Apps Windows 8 wird dieser Member von Object geerbt..GetType(). |
![]() ![]() ![]() ![]() | MemberwiseClone | |
![]() ![]() | ToString | In XNA Framework wird dieser Member von ToString() überschrieben. |
| Name | Beschreibung | |
|---|---|---|
![]() | SerializeObjectState |
Eine frühere Version eines .NET Framework-Hilfsprogramms, z. B. ILDasm.exe oder installutil.exe, wird mit einer Assembly verwendet, die mit einer höheren Version von .NET Framework entwickelt wurde. Um diese Ausnahme zu behandeln, verwenden Sie das Tool, das der Version von .NET Framework entspricht, die zum Entwickeln der Assembly verwendet wurde. Dies erfordert möglicherweise das Ändern der Path-Umgebungsvariable oder Bereitstellen eines vollqualifizierten Pfads für die richtige ausführbare Datei. Es wird versucht, eine nicht verwaltete Dynamic Link Library oder eine ausführbare Datei (z. B. eine Windows-System-DLL) zu laden, als ob es eine .NET Framework-Assembly ist. Im folgenden Beispiel wird dies mithilfe der Assembly.LoadFile-Methode zum Laden von 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.
Um diese Ausnahme zu behandeln, greifen Sie auf die in der DLL definierten Methoden zu, indem Sie die von der Entwicklungssprache bereitgestellten Funktionen verwenden, z. B. die Declare-Anweisung in Visual Basic oder das DllImportAttribute-Attribut mit dem extern-Schlüsselwort in C#. Eine DLL oder eine ausführbare Datei wird als 64-Bit-Assembly geladen, aber sie enthält 32-Bit-Funktionen oder Ressourcen. Es benötigt z. B. COM-Interop oder ruft Methoden in einer 32-Bit-Dynamic Link Library auf. Um diese Ausnahme zu behandeln, legen Sie die Eigenschaft Zielplattform des Projekts auf x86 (statt x64 oder AnyCPU) fest und kompilieren diese neu. Komponenten wurden mit anderen Versionen von .NET Framework erstellt. In der Regel tritt diese Ausnahme auf, wenn eine Anwendung oder eine Komponente, die mit .NET Framework 1.0 entwickelt wurde, oder der .NET Framework 1.1 versucht, eine Assembly zu laden, die mit .NET Framework 2.0 SP1 oder höher entwickelt wurde, oder wenn eine Anwendung, die mit .NET Framework 2.0 SP1 oder .NET Framework 3.5 entwickelt wurde, versucht, eine Assembly zu laden, die mit .NET Framework 4 entwickelt wurde. Der BadImageFormatException wird möglicherweise als Kompilierungsfehler gemeldet, oder die Ausnahme wird möglicherweise zur Laufzeit ausgelöst. Dieser Prozess wird anhand des folgenden Szenarios veranschaulicht. Es wird eine StringLib-Klasse definiert, die über einen einzigen Member (ToProperCase) verfügt und sich in der Assembly StringLib.dll befindet. 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.
Im folgenden Beispiel wird Reflektion verwendet, um eine Assembly mit dem Namen StringLib.dll zu laden. Wenn der Quellcode mit einem .NET Framework 1.1-Compiler kompiliert wird, wird eine BadImageFormatException von der Assembly.LoadFrom-Methode ausgelöst. 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); } }
Um diese Ausnahme zu behandeln, stellen Sie sicher, dass die Assembly, von der die Ausnahme ausgelöst wird, versucht, eine Assembly zu laden, die mit einer kompatiblen Version von .NET Framework entwickelt wurde.
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.






