Freigeben über


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

  1. Starten Sie Ildasm.exe (MSIL Disassembler-Tool).

  2. Laden Sie die Datei, die Sie testen möchten.

  3. 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

  1. Rufen Sie die GetAssemblyName-Methode auf, und übergeben Sie ihr den vollständigen Pfad und den Namen der Datei, die Sie testen möchten.

  2. 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)

AssemblyName

Konzepte

C#-Programmierhandbuch

Weitere Ressourcen

Visual Basic-Programmierhandbuch