Assembly.Load Метод

Определение

Загружает сборку.

Перегрузки

Load(Byte[], Byte[], SecurityContextSource)

Загружает сборку с образом в формате COFF, содержащим выпущенную сборку и необязательно содержащим символы и задающим источник для контекста безопасности. Сборка загружается в домен приложения вызывающего объекта.

Load(Byte[], Byte[], Evidence)
Является устаревшей.
Является устаревшей.

Загружает сборку с образом в формате COFF, содержащим выпущенную сборку и (необязательно) символы и свидетельство для сборки. Сборка загружается в домен приложения вызывающего объекта.

Load(String, Evidence)
Является устаревшей.
Является устаревшей.

Загружает сборку с заданным отображаемым именем. Сборка загружается в домен вызывающего объекта с использованием переданного основания.

Load(AssemblyName, Evidence)
Является устаревшей.
Является устаревшей.

Загружает сборку с заданным именем AssemblyName. Сборка загружена в домен вызывающего объекта с использованием переданного свидетельства.

Load(Byte[])

Загружает сборку с образом в формате COFF, содержащим порожденную сборку. Сборка загружается в домен приложения вызывающего объекта.

Load(String)

Загружает сборку с указанным именем.

Load(AssemblyName)

Загружает сборку с заданным именем AssemblyName.

Load(Byte[], Byte[])

Загружает сборку с образом в формате COFF, содержащим выпущенную сборку и (дополнительно) символы для сборки. Сборка загружается в домен приложения вызывающего объекта.

Load(Byte[], Byte[], SecurityContextSource)

Загружает сборку с образом в формате COFF, содержащим выпущенную сборку и необязательно содержащим символы и задающим источник для контекста безопасности. Сборка загружается в домен приложения вызывающего объекта.

public:
 static System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly, cli::array <System::Byte> ^ rawSymbolStore, System::Security::SecurityContextSource securityContextSource);
public static System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore, System.Security.SecurityContextSource securityContextSource);
static member Load : byte[] * byte[] * System.Security.SecurityContextSource -> System.Reflection.Assembly
Public Shared Function Load (rawAssembly As Byte(), rawSymbolStore As Byte(), securityContextSource As SecurityContextSource) As Assembly

Параметры

rawAssembly
Byte[]

Массив байтов, который является образом в формате COFF, содержащим созданную сборку.

rawSymbolStore
Byte[]

Массив байтов, содержащий необработанные байты, которые представляют символы для сборки.

securityContextSource
SecurityContextSource

Источник контекста безопасности.

Возвращаемое значение

Assembly

Загруженная сборка.

Исключения

rawAssembly имеет значение null.

rawAssembly не является допустимой сборкой.

-или-

Сборка rawAssembly была скомпилирована в более поздней версии среды CLR, чем версия, загруженная в текущий момент.

Значение securityContextSource не является одним из значений перечисления.

Комментарии

Сборка загружается в домен приложения вызывающего объекта, используя указанный источник для контекста безопасности. Если rawSymbolStore задано значение , то также загружаются необработанные байты, представляющие символы для сборки.

Применяется к

Load(Byte[], Byte[], Evidence)

Внимание!

This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

Внимание!

Теперь этот API является нерекомендуемым.

Загружает сборку с образом в формате COFF, содержащим выпущенную сборку и (необязательно) символы и свидетельство для сборки. Сборка загружается в домен приложения вызывающего объекта.

public:
 static System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly, cli::array <System::Byte> ^ rawSymbolStore, System::Security::Policy::Evidence ^ securityEvidence);
public static System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence);
[System.Obsolete("This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public static System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence);
[System.Obsolete]
public static System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence);
static member Load : byte[] * byte[] * System.Security.Policy.Evidence -> System.Reflection.Assembly
[<System.Obsolete("This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
static member Load : byte[] * byte[] * System.Security.Policy.Evidence -> System.Reflection.Assembly
[<System.Obsolete>]
static member Load : byte[] * byte[] * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Shared Function Load (rawAssembly As Byte(), rawSymbolStore As Byte(), securityEvidence As Evidence) As Assembly

Параметры

rawAssembly
Byte[]

Массив байтов, который является образом в формате COFF, содержащим созданную сборку.

rawSymbolStore
Byte[]

Массив байтов, содержащий необработанные байты, которые представляют символы для сборки.

securityEvidence
Evidence

Свидетельство для загрузки сборки.

Возвращаемое значение

Assembly

Загруженная сборка.

Атрибуты

Исключения

rawAssembly имеет значение null.

rawAssembly не является допустимой сборкой.

-или-

В настоящий момент загружена версия 2.0 среды CLR, а параметр rawAssembly был скомпилирован в более поздней версии.

Сборка или модуль был загружен дважды с двумя разными свидетельствами.

securityEvidence не является null. По умолчанию устаревшая политика CAS не включена в платформа .NET Framework 4; если она не включена, securityEvidence должна иметь значение null.

Комментарии

Сборка загружена в домен вызывающего объекта с использованием переданного свидетельства. Также загружаются необработанные байты, представляющие символы для сборки.

От свидетельства зависит, предоставляются ли сборке определенные разрешения. Ниже приведены правила объединения сборок и доказательств безопасности.

  • При использовании Load метода без Evidence параметра сборка загружается с свидетельством, которое предоставляет загрузчик.

  • При использовании Load метода с параметром Evidence элементы свидетельства объединяются. Фрагменты доказательств, предоставленных в качестве аргумента Load для метода, заменяют фрагменты доказательств, предоставленных загрузчиком.

  • При использовании перегрузки Load метода с параметром Byte[] для загрузки образа COFF свидетельство наследуется от вызывающей сборки. Это относится к платформа .NET Framework версии 1.1 с пакетом обновления 1 (SP1) и последующим выпускам.

    Примечание

    В платформа .NET Framework версии 1.0 и версии 1.1 без с пакетом Load обновления 1 (SP1) при использовании перегрузки метода с параметром Byte[] для загрузки образа COFF доказательства объединяются. Zone, Url и Site наследуются от вызывающей сборки, а Hash и StrongName — из сборки COFF.

  • При использовании Load метода с параметром Byte[] и Evidence для загрузки изображения COFF используется только предоставленное свидетельство. Свидетельство вызывающей сборки и свидетельство образа COFF игнорируются.

При отражении исполняемых файлов C++ может возникнуть исключение BadImageFormatException. Скорее всего, это вызвано тем, что компилятор C++ удаляет адреса перемещения или .reloc раздел из исполняемого файла. Чтобы сохранить .reloc адрес исполняемого файла C++, укажите /fixed:no при связывании.

Если метод вызывается Load несколько раз в одной сборке, но с другим указанным свидетельством, среда CLR не создает исключение , FileLoadException так как невозможно определить равенство и целостность различных спецификаций свидетельства. Первое успешное свидетельство — это использованные доказательства.

Обратите внимание, что эта перегрузка метода всегда создает новый Assembly объект с собственным сопоставлением.

Применяется к

Load(String, Evidence)

Внимание!

This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

Внимание!

Теперь этот API является нерекомендуемым.

Загружает сборку с заданным отображаемым именем. Сборка загружается в домен вызывающего объекта с использованием переданного основания.

public:
 static System::Reflection::Assembly ^ Load(System::String ^ assemblyString, System::Security::Policy::Evidence ^ assemblySecurity);
public static System.Reflection.Assembly Load (string assemblyString, System.Security.Policy.Evidence assemblySecurity);
[System.Obsolete("This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public static System.Reflection.Assembly Load (string assemblyString, System.Security.Policy.Evidence assemblySecurity);
[System.Obsolete]
public static System.Reflection.Assembly Load (string assemblyString, System.Security.Policy.Evidence assemblySecurity);
static member Load : string * System.Security.Policy.Evidence -> System.Reflection.Assembly
[<System.Obsolete("This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
static member Load : string * System.Security.Policy.Evidence -> System.Reflection.Assembly
[<System.Obsolete>]
static member Load : string * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Shared Function Load (assemblyString As String, assemblySecurity As Evidence) As Assembly

Параметры

assemblyString
String

Отображаемое имя сборки.

assemblySecurity
Evidence

Свидетельство для загрузки сборки.

Возвращаемое значение

Assembly

Загруженная сборка.

Атрибуты

Исключения

assemblyString имеет значение null.

assemblyString не найден.

assemblyString не является допустимой сборкой.

-или-

В настоящий момент загружена среда CLR версии 2.0 или более поздней версии. Сборка assemblyString была скомпилирована в более поздней версии.

Не удалось загрузить файл, который был найден.

-или-

Сборка или модуль был загружен дважды с двумя разными свидетельствами.

Комментарии

FileLoadException возникает, если assemblyString указывает полное имя сборки, а первая сборка, соответствующая простому имени, имеет другую версию, язык и региональные параметры или маркер открытого ключа. Загрузчик не продолжает поиск других сборок, соответствующих простому имени.

От свидетельства зависит, предоставляются ли сборке определенные разрешения. Ниже приведены правила объединения сборок и доказательств безопасности.

  • При использовании Load метода без Evidence параметра сборка загружается с свидетельством, которое предоставляет загрузчик.

  • При использовании Load метода с параметром Evidence элементы свидетельства объединяются. Фрагменты доказательств, предоставленных в качестве аргумента Load для метода, заменяют фрагменты доказательств, предоставленных загрузчиком.

  • При использовании перегрузки Load метода с параметром Byte[] для загрузки изображения общего формата объектного файла (COFF) свидетельство наследуется от вызывающей сборки. Это относится к платформа .NET Framework версии 1.1 с пакетом обновления 1 (SP1) и последующим выпускам.

    Примечание

    В платформа .NET Framework версии 1.0 и версии 1.1 без с пакетом Load обновления 1 (SP1) при использовании перегрузки метода с параметром Byte[] для загрузки образа COFF доказательства объединяются. Zone, Url и Site наследуются от вызывающей сборки, а Hash и StrongName — из сборки COFF.

  • При использовании Load метода с параметром Byte[] и Evidence для загрузки изображения COFF используется только предоставленное свидетельство. Свидетельство вызывающей сборки и свидетельство образа COFF игнорируются.

При отражении исполняемых файлов C++ может возникнуть исключение BadImageFormatException. Скорее всего, это вызвано тем, что компилятор C++ удаляет адреса перемещения или .reloc раздел из исполняемого файла. Чтобы сохранить .reloc адрес исполняемого файла C++, укажите /fixed:no при связывании.

Если этот метод вызывается несколько раз в одной и той же сборке, но с указанием другого свидетельства, среда CLR не создает исключение FileLoadException , так как невозможно определить равенство и целостность различных спецификаций свидетельства. Первое успешное свидетельство — это использованные доказательства.

В платформа .NET Framework версии 2.0 архитектура процессора добавляется в удостоверение сборки и может быть указана как часть строк имени сборки. Например, "ProcessorArchitecture=msil". Однако рекомендуемый способ указать имя сборки — создать AssemblyName объект и передать его соответствующей перегрузке Load метода . См. раздел AssemblyName.ProcessorArchitecture.

См. также раздел

Применяется к

Load(AssemblyName, Evidence)

Внимание!

This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

Внимание!

Теперь этот API является нерекомендуемым.

Загружает сборку с заданным именем AssemblyName. Сборка загружена в домен вызывающего объекта с использованием переданного свидетельства.

public:
 static System::Reflection::Assembly ^ Load(System::Reflection::AssemblyName ^ assemblyRef, System::Security::Policy::Evidence ^ assemblySecurity);
public static System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity);
[System.Obsolete("This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public static System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity);
[System.Obsolete]
public static System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity);
static member Load : System.Reflection.AssemblyName * System.Security.Policy.Evidence -> System.Reflection.Assembly
[<System.Obsolete("This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
static member Load : System.Reflection.AssemblyName * System.Security.Policy.Evidence -> System.Reflection.Assembly
[<System.Obsolete>]
static member Load : System.Reflection.AssemblyName * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Shared Function Load (assemblyRef As AssemblyName, assemblySecurity As Evidence) As Assembly

Параметры

assemblyRef
AssemblyName

Объект, описывающий загружаемую сборку.

assemblySecurity
Evidence

Свидетельство для загрузки сборки.

Возвращаемое значение

Assembly

Загруженная сборка.

Атрибуты

Исключения

assemblyRef имеет значение null.

assemblyRef не найден.

assemblyRef не является допустимой сборкой.

-или-

В настоящий момент загружена версия 2.0 среды CLR, а параметр assemblyRef был скомпилирован в более поздней версии.

Сборка или модуль был загружен дважды с двумя разными свидетельствами.

-или-

assemblyRef указывает на удаленную сборку, но возможность выполнения кода в удаленных сборках отключена. См. элемент <loadFromRemoteSources>.

Комментарии

FileLoadException возникает, если assemblyRef указывает полное имя сборки, а первая сборка, соответствующая простому имени, имеет другую версию, язык и региональные параметры или маркер открытого ключа. Загрузчик не продолжает поиск других сборок, соответствующих простому имени. Начиная с платформа .NET Framework 4, так как выполнение кода в удаленных сборках отключено по умолчанию, также возникает исключение , FileLoadException если assemblyRef указывает удаленную сборку. Чтобы включить выполнение кода, загруженного из удаленных расположений, можно использовать элемент конфигурации <loadFromRemoteSources> .

Примечание

Не используйте с набором AssemblyNameCodeBase свойств. Свойство CodeBase не предоставляет никакие элементы удостоверения сборки (например, имя или версия), поэтому загрузка не выполняется в соответствии с правилами загрузки по удостоверению, как ожидалось бы от Load метода . Вместо этого сборка загружается с помощью правил загрузки из. Сведения о недостатках использования контекста загрузки из см. в разделе Перегрузка Assembly.LoadFrom метода или Рекомендации по загрузке сборок.

От свидетельства зависит, предоставляются ли сборке определенные разрешения. Ниже приведены правила объединения сборок и доказательств безопасности.

  • При использовании Load метода без Evidence параметра сборка загружается с свидетельством, которое предоставляет загрузчик.

  • При использовании Load метода с параметром Evidence элементы свидетельства объединяются. Фрагменты доказательств, предоставленных в качестве аргумента Load для метода, заменяют фрагменты доказательств, предоставленных загрузчиком.

  • При использовании перегрузки Load метода с параметром Byte[] для загрузки изображения общего формата объектного файла (COFF) свидетельство наследуется от вызывающей сборки. Это относится к платформа .NET Framework версии 1.1 с пакетом обновления 1 (SP1) и последующим выпускам.

    Примечание

    В платформа .NET Framework версии 1.0 и версии 1.1 без с пакетом Load обновления 1 (SP1) при использовании перегрузки метода с параметром Byte[] для загрузки образа COFF доказательства объединяются. Zone, Url и Site наследуются от вызывающей сборки, а Hash и StrongName — из сборки COFF.

  • При использовании Load метода с параметром Byte[] и Evidence для загрузки изображения COFF используется только предоставленное свидетельство. Свидетельство вызывающей сборки и свидетельство образа COFF игнорируются.

При отражении исполняемых файлов C++ может возникнуть исключение BadImageFormatException. Скорее всего, это вызвано тем, что компилятор C++ удаляет адреса перемещения или .reloc раздел из исполняемого файла. Чтобы сохранить .reloc адрес исполняемого файла C++, укажите /fixed:no при связывании.

Примечание

Если задано как свойство, так AssemblyName.Name и AssemblyName.CodeBase свойство , при первой попытке загрузить сборку используется отображаемое имя (включая версию, язык и региональные параметры и т. д., возвращаемое свойством Assembly.FullName ). Если файл не найден, CodeBase используется для поиска сборки. Если сборка найдена с помощью CodeBase, отображаемое имя сопоставляется со сборкой. Если совпадение завершается ошибкой FileLoadException , возникает исключение .

Если метод вызывается Load несколько раз в одной сборке, но с другим указанным свидетельством, среда CLR не создает исключение , FileLoadException так как невозможно определить равенство и целостность различных спецификаций свидетельства. Первое успешное свидетельство — это использованные доказательства.

См. также раздел

Применяется к

Load(Byte[])

Загружает сборку с образом в формате COFF, содержащим порожденную сборку. Сборка загружается в домен приложения вызывающего объекта.

public:
 static System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly);
public static System.Reflection.Assembly Load (byte[] rawAssembly);
static member Load : byte[] -> System.Reflection.Assembly
Public Shared Function Load (rawAssembly As Byte()) As Assembly

Параметры

rawAssembly
Byte[]

Массив байтов, который является образом в формате COFF, содержащим созданную сборку.

Возвращаемое значение

Assembly

Загруженная сборка.

Исключения

rawAssembly имеет значение null.

rawAssembly не является допустимой сборкой.

-или-

В настоящий момент загружена среда CLR версии 2.0 или более поздней версии. Сборка rawAssembly была скомпилирована в более поздней версии.

Комментарии

Уровень доверия сборки, загружаемой с помощью этого метода, совпадает с уровнем доверия вызывающей сборки. Чтобы загрузить сборку из массива байтов с уровнем доверия домена приложения, используйте перегрузку Load(Byte[], Byte[], SecurityContextSource) метода . Дополнительные сведения об использовании свидетельства с перегрузками Load метода, которые принимают массивы байтов, см. в разделе Перегрузка Load(Byte[], Byte[], Evidence) метода.

При отражении исполняемых файлов C++ может возникнуть исключение BadImageFormatException. Скорее всего, это вызвано тем, что компилятор C++ удаляет адреса перемещения или .reloc раздел из исполняемого файла. Чтобы сохранить .reloc адрес исполняемого файла C++, укажите /fixed:no при связывании.

Обратите внимание, что эта перегрузка метода всегда создает новый Assembly объект с собственным сопоставлением.

Применяется к

Load(String)

Загружает сборку с указанным именем.

public:
 static System::Reflection::Assembly ^ Load(System::String ^ assemblyString);
public static System.Reflection.Assembly Load (string assemblyString);
static member Load : string -> System.Reflection.Assembly
Public Shared Function Load (assemblyString As String) As Assembly

Параметры

assemblyString
String

Длинная или короткая форма имени сборки.

Возвращаемое значение

Assembly

Загруженная сборка.

Исключения

assemblyString имеет значение null.

assemblyString представляет собой строку нулевой длины.

assemblyString не найден.

Не удалось загрузить файл, который был найден.

assemblyString не является допустимой сборкой.

-или-

В настоящий момент загружена среда CLR версии 2.0 или более поздней версии. Сборка assemblyString была скомпилирована в более поздней версии.

Примеры

В следующем примере загружается сборка с ее полным именем и перечисляются все типы, содержащиеся в указанной сборке. Сведения о том, как получить полное имя сборки, см. в разделе Имена сборок.

using namespace System;
using namespace System::Collections;
using namespace System::Reflection;
int main()
{
    // You must supply a valid fully qualified assembly name.            
    Assembly^ SampleAssembly = Assembly::Load
        ( "SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3" );
    array<Type^>^ Types = SampleAssembly->GetTypes();
    
    // Display all the types contained in the specified assembly.
    IEnumerator^ myEnum = Types->GetEnumerator();
    Type^ oType;
    while ( myEnum->MoveNext() )
    {
        oType = safe_cast<Type^>(myEnum->Current);
        Console::WriteLine( oType->Name );
    }
}
using System;
using System.Reflection;

class Class1
{
    public static void Main()
    {
        // You must supply a valid fully qualified assembly name.
        Assembly SampleAssembly = Assembly.Load
            ("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3");
        // Display all the types contained in the specified assembly.
        foreach (Type oType in SampleAssembly.GetTypes()) {
            Console.WriteLine(oType.Name);
        }
    }
}
Imports System.Reflection

Class Class1
    Public Shared Sub Main()
        ' You must supply a valid fully qualified assembly name.            
        Dim SampleAssembly As [Assembly] = _
            [Assembly].Load("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3")
        Dim oType As Type
        ' Display all the types contained in the specified assembly.
        For Each oType In SampleAssembly.GetTypes()
            Console.WriteLine(oType.Name)
        Next oType
    End Sub	'LoadSample
End Class

Комментарии

Чтобы загрузить правильную сборку, рекомендуется вызвать Load метод , передав длинную форму имени сборки. Длинная форма имени сборки состоит из его простого имени (например, "System" для сборки System.dll), а также версии, языка и региональных параметров, маркера открытого ключа и (при необходимости) архитектуры процессора. Он соответствует свойству сборки FullName . В следующем примере показано использование длинного имени для загрузки сборки System.dll для платформа .NET Framework 4:

using System;
using System.Reflection;

public class Example
{
   public static void Main()
   {
      string longName = "system, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
      Assembly assem = Assembly.Load(longName);
      if (assem == null)
         Console.WriteLine("Unable to load assembly...");
      else
         Console.WriteLine(assem.FullName);
   }
}
// The example displays the following output:
//        system, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Imports System.Reflection

Module Example
   Public Sub Main()
      Dim longName As String = "system, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
      Dim assem As Assembly = Assembly.Load(longName)
      If assem Is Nothing Then
         Console.WriteLine("Unable to load assembly...")
      Else
         Console.WriteLine(assem.FullName)
      End If
   End Sub
End Module
' The example displays the following output:
'       system, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

FileLoadException возникает, если assemblyString указывает полное имя сборки, а первая сборка, соответствующая простому имени, имеет другую версию, язык и региональные параметры или маркер открытого ключа. Загрузчик не продолжает поиск других сборок, соответствующих простому имени.

От свидетельства зависит, предоставляются ли сборке определенные разрешения. Ниже приведены правила объединения сборок и доказательств безопасности.

  • При использовании Load метода без Evidence параметра сборка загружается с свидетельством, которое предоставляет загрузчик.

  • При использовании Load метода с параметром Evidence элементы свидетельства объединяются. Фрагменты доказательств, предоставленных в качестве аргумента Load для метода, заменяют фрагменты доказательств, предоставленных загрузчиком.

  • При использовании перегрузки Load метода с параметром Byte[] для загрузки изображения общего формата объектного файла (COFF) свидетельство наследуется от вызывающей сборки. Это относится к платформа .NET Framework версии 1.1 с пакетом обновления 1 (SP1) и последующим выпускам.

    Примечание

    В платформа .NET Framework версии 1.0 и версии 1.1 без с пакетом Load обновления 1 (SP1) при использовании перегрузки метода с параметром Byte[] для загрузки образа COFF доказательства объединяются. Zone, Url и Site наследуются от вызывающей сборки, а Hash и StrongName — из сборки COFF.

  • При использовании Load метода с параметром Byte[] и Evidence для загрузки изображения COFF используется только предоставленное свидетельство. Свидетельство вызывающей сборки и свидетельство образа COFF игнорируются.

При отражении исполняемых файлов C++ может возникнуть исключение BadImageFormatException. Скорее всего, это вызвано тем, что компилятор C++ удаляет адреса перемещения или .reloc раздел из исполняемого файла. Чтобы сохранить .reloc адрес исполняемого файла C++, укажите /fixed:no при связывании.

В платформа .NET Framework версии 2.0 архитектура процессора добавляется в удостоверение сборки и может быть указана как часть строк имени сборки. Например, "ProcessorArchitecture=msil". Однако рекомендуемый способ указать имя сборки — создать AssemblyName объект и передать его соответствующей перегрузке Load метода . См. раздел AssemblyName.ProcessorArchitecture.

См. также раздел

Применяется к

Load(AssemblyName)

Загружает сборку с заданным именем AssemblyName.

public:
 static System::Reflection::Assembly ^ Load(System::Reflection::AssemblyName ^ assemblyRef);
public static System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyRef);
static member Load : System.Reflection.AssemblyName -> System.Reflection.Assembly
Public Shared Function Load (assemblyRef As AssemblyName) As Assembly

Параметры

assemblyRef
AssemblyName

Объект, описывающий загружаемую сборку.

Возвращаемое значение

Assembly

Загруженная сборка.

Исключения

assemblyRef имеет значение null.

assemblyRef не найден.

Не удалось загрузить файл, который был найден.

-или-

assemblyRef указывает на удаленную сборку, но возможность выполнения кода в удаленных сборках отключена. См. элемент <loadFromRemoteSources>.

Примечание. Вместо этого в .NET для приложений Магазина Windows или переносимой библиотеке классов перехватите исключение IOExceptionбазового класса , .

assemblyRef не является допустимой сборкой. -или-

В настоящий момент загружена среда CLR версии 2.0 или более поздней версии. Сборка assemblyRef была скомпилирована в более поздней версии.

Примеры

В следующем примере создается AssemblyName экземпляр объекта и он используется для загрузки сборки sysglobal.dll . Затем в примере отображается полное имя открытых типов сборки.

using System;
using System.Reflection;

public class Example
{
   public static void Main()
   {
      String fullName = "sysglobl, Version=4.0.0.0, Culture=neutral, " +
                        "PublicKeyToken=b03f5f7f11d50a3a, processor architecture=MSIL";
      var an = new AssemblyName(fullName);
      var assem = Assembly.Load(an);
      Console.WriteLine("Public types in assembly {0}:", assem.FullName);
      foreach (var t in assem.GetTypes())
         if (t.IsPublic)
            Console.WriteLine("   {0}", t.FullName);
   }
}
// The example displays the following output:
//   Public types in assembly sysglobl, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a:
//      System.Globalization.CultureAndRegionInfoBuilder
//      System.Globalization.CultureAndRegionModifiers
Imports System.Reflection

Module Example
   Public Sub Main()
      Dim fullName As String = "sysglobl, Version=4.0.0.0, Culture=neutral, " +
                               "PublicKeyToken=b03f5f7f11d50a3a, processor architecture=MSIL"
      Dim an As New AssemblyName(fullName)
      Dim assem As Assembly = Assembly.Load(an)
      Console.WriteLine("Public types in assembly {0}:", assem.FullName)
      For Each t As Type in assem.GetTypes()
         If t.IsPublic Then Console.WriteLine("   {0}", t.FullName)
      Next
   End Sub
End Module
' The example displays the following output:
'   Public types in assembly sysglobl, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a:
'      System.Globalization.CultureAndRegionInfoBuilder
'      System.Globalization.CultureAndRegionModifiers

Комментарии

FileLoadException вызывается, если assemblyRef указывает полное имя сборки, а первая сборка, соответствующая простому имени, имеет другую версию, язык и региональные параметры или маркер открытого ключа. Загрузчик не продолжает поиск других сборок, соответствующих простому имени. Начиная с платформа .NET Framework 4, так как выполнение кода в удаленных сборках отключено по умолчанию, также возникает исключение , FileLoadException если assemblyRef указывает удаленную сборку. Чтобы включить выполнение кода, загруженного из удаленных расположений, можно использовать элемент конфигурации <loadFromRemoteSources> .

Примечание

Не используйте с набором AssemblyNameCodeBase свойств. Свойство CodeBase не предоставляет никакие элементы удостоверения сборки (например, имя или версия), поэтому загрузка не выполняется в соответствии с правилами загрузки по удостоверению, как ожидалось бы от Load метода . Вместо этого сборка загружается с помощью правил загрузки из. Сведения о недостатках использования контекста загрузки из см. в разделе Перегрузка Assembly.LoadFrom метода или Рекомендации по загрузке сборок.

От свидетельства зависит, предоставляются ли сборке определенные разрешения. Ниже приведены правила объединения сборок и доказательств безопасности.

  • При использовании Load метода без Evidence параметра сборка загружается с свидетельством, которое предоставляет загрузчик.

  • При использовании Load метода с параметром Evidence элементы свидетельства объединяются. Фрагменты доказательств, предоставленных в качестве аргумента Load для метода, заменяют фрагменты доказательств, предоставленных загрузчиком.

  • При использовании перегрузки Load метода с параметром Byte[] для загрузки изображения общего формата объектного файла (COFF) свидетельство наследуется от вызывающей сборки. Это относится к платформа .NET Framework версии 1.1 с пакетом обновления 1 (SP1) и последующим выпускам.

    Примечание

    В платформа .NET Framework версии 1.0 и версии 1.1 без с пакетом Load обновления 1 (SP1) при использовании перегрузки метода с параметром Byte[] для загрузки образа COFF доказательства объединяются. Zone, Url и Site наследуются от вызывающей сборки, а Hash и StrongName — из сборки COFF.

  • При использовании Load метода с параметром Byte[] и Evidence для загрузки изображения COFF используется только предоставленное свидетельство. Свидетельство вызывающей сборки и свидетельство образа COFF игнорируются.

При отражении исполняемых файлов C++ может возникнуть исключение BadImageFormatException. Скорее всего, это вызвано тем, что компилятор C++ удаляет адреса перемещения или .reloc раздел из исполняемого файла. Чтобы сохранить .reloc адрес исполняемого файла C++, укажите /fixed:no при связывании.

Примечание

Если задано как свойство, так AssemblyName.Name и AssemblyName.CodeBase свойство , при первой попытке загрузить сборку используется отображаемое имя (включая версию, язык и региональные параметры и т. д., возвращаемое свойством Assembly.FullName ). Если файл не найден, CodeBase используется для поиска сборки. Если сборка найдена с помощью CodeBase, отображаемое имя сопоставляется со сборкой. Если совпадение завершается ошибкой FileLoadException , возникает исключение .

См. также раздел

Применяется к

Load(Byte[], Byte[])

Загружает сборку с образом в формате COFF, содержащим выпущенную сборку и (дополнительно) символы для сборки. Сборка загружается в домен приложения вызывающего объекта.

public:
 static System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly, cli::array <System::Byte> ^ rawSymbolStore);
public static System.Reflection.Assembly Load (byte[] rawAssembly, byte[]? rawSymbolStore);
public static System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore);
static member Load : byte[] * byte[] -> System.Reflection.Assembly
Public Shared Function Load (rawAssembly As Byte(), rawSymbolStore As Byte()) As Assembly

Параметры

rawAssembly
Byte[]

Массив байтов, который является образом в формате COFF, содержащим созданную сборку.

rawSymbolStore
Byte[]

Массив байтов, содержащий необработанные байты, которые представляют символы для сборки.

Возвращаемое значение

Assembly

Загруженная сборка.

Исключения

rawAssembly имеет значение null.

rawAssembly не является допустимой сборкой.

-или-

В настоящий момент загружена среда CLR версии 2.0 или более поздней версии. Сборка rawAssembly была скомпилирована в более поздней версии.

Комментарии

Уровень доверия сборки, загружаемой с помощью этого метода, совпадает с уровнем доверия вызывающей сборки. Чтобы загрузить сборку из массива байтов с уровнем доверия домена приложения, используйте перегрузку Load(Byte[], Byte[], SecurityContextSource) метода . Дополнительные сведения об использовании свидетельства с перегрузками Load метода, которые принимают массивы байтов, см. в разделе Перегрузка Load(Byte[], Byte[], Evidence) метода.

При отражении исполняемых файлов C++ может возникнуть исключение BadImageFormatException. Скорее всего, это вызвано тем, что компилятор C++ удаляет адреса перемещения или .reloc раздел из исполняемого файла. Чтобы сохранить .reloc адрес исполняемого файла C++, укажите /fixed:no при связывании.

Обратите внимание, что эта перегрузка метода всегда создает новый Assembly объект с собственным сопоставлением.

Применяется к