Gewusst wie: Bestimmen, ob eine Datei eine Assembly ist (C# und Visual Basic)
Eine Datei ist nur dann eine Assembly, wenn sie verwaltet wird und einen Assemblyeintrag in ihren Metadaten enthält. Weitere Informationen über Assemblys und Metadaten finden Sie im Thema Assemblymanifest.
So bestimmen Sie manuell, ob eine Datei eine Assembly ist
Starten Sie Ildasm.exe (MSIL Disassembler-Tool).
Laden Sie die Datei, die Sie testen möchten.
Wenn ILDASM meldet, dass es sich bei der Datei nicht um eine übertragbare ausführbare Datei handelt, ist sie keine Assembly. Weitere Informationen finden Sie unter dem Thema Gewusst wie: Ansichtsassemblyinhalt.
So bestimmen Sie programmgesteuert, ob eine Datei eine Assembly ist
Rufen Sie die GetAssemblyName-Methode auf, und übergeben Sie ihr den vollständigen Pfad und den Namen der Datei, die Sie testen möchten.
Wenn eine BadImageFormatException-Ausnahme ausgelöst wird, ist die Datei keine Assembly.
Beispiel
In diesem Beispiel wird eine DLL darauf getestet, ob sie eine Assembly ist.
Module Module1
Sub Main()
Try
Dim testAssembly As Reflection.AssemblyName =
Reflection.AssemblyName.GetAssemblyName("C:\Windows\Microsoft.NET\Framework\v3.5\System.Net.dll")
Console.WriteLine("Yes, the file is an Assembly.")
Catch ex As System.IO.FileNotFoundException
Console.WriteLine("The file cannot be found.")
Catch ex As System.BadImageFormatException
Console.WriteLine("The file is not an Assembly.")
Catch ex As System.IO.FileLoadException
Console.WriteLine("The Assembly has already been loaded.")
End Try
Console.ReadLine()
End Sub
End Module
' Output (with .NET Framework 3.5 installed):
' Yes, the file is an Assembly.
class TestAssembly
{
static void Main()
{
try
{
System.Reflection.AssemblyName testAssembly =
System.Reflection.AssemblyName.GetAssemblyName(@"C:\Windows\Microsoft.NET\Framework\v3.5\System.Net.dll");
System.Console.WriteLine("Yes, the file is an assembly.");
}
catch (System.IO.FileNotFoundException)
{
System.Console.WriteLine("The file cannot be found.");
}
catch (System.BadImageFormatException)
{
System.Console.WriteLine("The file is not an assembly.");
}
catch (System.IO.FileLoadException)
{
System.Console.WriteLine("The assembly has already been loaded.");
}
}
}
/* Output (with .NET Framework 3.5 installed):
Yes, the file is an assembly.
*/
Die GetAssemblyName-Methode lädt die Testdatei und gibt sie frei, sobald die Informationen gelesen wurden.
Siehe auch
Referenz
Assemblys und der globale Assemblycache (C# und Visual Basic)