Partager via


Comment : déterminer si un fichier est un assembly (C# et Visual Basic)

Un fichier est un assembly si et uniquement s'il est managé et contient une entrée d'assembly dans ses métadonnées. Pour plus d'informations sur les assemblys et les métadonnées, consultez Manifeste d'assembly.

Comment déterminer manuellement si un fichier est un assembly

  1. Démarrez l'outil Ildasm.exe (Désassembleur IL).

  2. Chargez le fichier que vous voulez tester.

  3. Si ILDASM rapporte que le fichier n'est pas un fichier portable exécutable (PE), il ne s'agit donc pas d'un assembly. Pour plus d'informations, consultez la rubrique Comment : afficher le contenu d'un assembly.

Comment déterminer par programme si un fichier est un assembly

  1. Appelez la méthode GetAssemblyName, en passant le chemin d'accès complet et le nom du fichier vous testez.

  2. Si une exception BadImageFormatException est levée, le fichier n'est pas un assembly.

Exemple

Cet exemple teste une DLL pour voir s'il s'agit d'un assembly.

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.
*/

La méthode GetAssemblyName charge le fichier de test, puis le libère une fois les informations sont lues.

Voir aussi

Référence

AssemblyName

Concepts

Guide de programmation C#

Assemblys et le Global Assembly Cache (C# et Visual Basic)

Autres ressources

Guide de programmation Visual Basic