Cómo: Determinar si un archivo es un ensamblado (C# y Visual Basic)
Un archivo es un ensamblado si, y sólo si, se administra y contiene una entrada de ensamblado en sus metadatos. Para obtener más información sobre ensamblados y metadatos, vea el tema Manifiesto del ensamblado.
Cómo determinar manualmente si un archivo es un ensamblado
Cargue el archivo que desea probar.
Si ILDASM informa de que el archivo no es un archivo ejecutable portable (PE), entonces no es un ensamblado. Para obtener más información, vea el tema Cómo: Ver el contenido de un ensamblado.
Cómo determinar mediante programación si un archivo es un ensamblado
Llame al método GetAssemblyName y pase la ruta de acceso completa y el nombre del archivo que está probando.
Si se produce una excepción BadImageFormatException, el archivo no es un ensamblado.
Ejemplo
Este ejemplo prueba un archivo DLL para ver si es un ensamblado.
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.
*/
El método GetAssemblyName carga el archivo de prueba y, a continuación, lo libera una vez que se lee la información.
Vea también
Referencia
Conceptos
Ensamblados y caché global de ensamblados (C# y Visual Basic)