Практическое руководство. Определение, является ли файл сборкой (C# и Visual Basic)

Файл является сборкой только в том случае, если является управляемым и содержит запись сборки в своих метаданных.Дополнительные сведения о сборках и метаданных содержатся в разделе Манифест сборки.

Порядок определения является ли файл сборкой вручную

  1. Запустите Ildasm.exe (дизассемблер MSIL).

  2. Загрузите файл, который требуется проверить.

  3. Если ILDASM сообщает, что файл не является переносимым исполняемым (PE) файлом, то он не является сборкой.Дополнительные сведения см. в разделе Практическое руководство. Просмотр содержимого сборок.

Порядок определения является ли файл сборкой программными средствами

  1. Вызовите метод GetAssemblyName, подставив полный путь к файлу и имя файла, который требуется проверить.

  2. Если возникает исключение BadImageFormatException, то это значит, что файл не является сборкой.

Пример

В этом примере проверяется, является ли сборкой библиотека DLL.

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

Метод GetAssemblyName загружает тестовый файл и деблокирует его после считывания информации.

См. также

Ссылки

AssemblyName

Основные понятия

Руководство по программированию на C#

Сборки и глобальный кэш сборок (C# и Visual Basic)

Другие ресурсы

Руководство по программированию на Visual Basic