Поделиться через


Assembly.LoadFrom Метод

Определение

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

Перегрузки

Имя Описание
LoadFrom(String, Byte[], AssemblyHashAlgorithm)
Устаревшие..

Загружает сборку с именем файла или путем, хэш-значением и хэш-алгоритмом.

LoadFrom(String, Evidence, Byte[], AssemblyHashAlgorithm)
Устаревшие..

Загружает сборку с именем файла или путем, доказательством безопасности, хэш-значением и хэш-алгоритмом.

LoadFrom(String)

Загружает сборку с именем файла или путем.

LoadFrom(String, Evidence)
Устаревшие..

Загружает сборку с именем файла или путем и предоставляет доказательства безопасности.

Комментарии

Только .NET Framework: Сведения <loadFromRemoteSources> о загрузке сборок из удаленных расположений.

LoadFrom(String, Byte[], AssemblyHashAlgorithm)

Исходный код:
Assembly.cs
Исходный код:
Assembly.cs
Исходный код:
Assembly.cs
Исходный код:
Assembly.cs
Исходный код:
Assembly.cs

Внимание

LoadFrom with a custom AssemblyHashAlgorithm is obsolete. Use overloads without an AssemblyHashAlgorithm.

Загружает сборку с именем файла или путем, хэш-значением и хэш-алгоритмом.

public:
 static System::Reflection::Assembly ^ LoadFrom(System::String ^ assemblyFile, cli::array <System::Byte> ^ hashValue, System::Configuration::Assemblies::AssemblyHashAlgorithm hashAlgorithm);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")]
[System.Obsolete("LoadFrom with a custom AssemblyHashAlgorithm is obsolete. Use overloads without an AssemblyHashAlgorithm.", DiagnosticId="SYSLIB0056", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static System.Reflection.Assembly LoadFrom(string assemblyFile, byte[]? hashValue, System.Configuration.Assemblies.AssemblyHashAlgorithm hashAlgorithm);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")]
public static System.Reflection.Assembly LoadFrom(string assemblyFile, byte[]? hashValue, System.Configuration.Assemblies.AssemblyHashAlgorithm hashAlgorithm);
public static System.Reflection.Assembly LoadFrom(string assemblyFile, byte[] hashValue, System.Configuration.Assemblies.AssemblyHashAlgorithm hashAlgorithm);
public static System.Reflection.Assembly LoadFrom(string assemblyFile, byte[]? hashValue, System.Configuration.Assemblies.AssemblyHashAlgorithm hashAlgorithm);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")>]
[<System.Obsolete("LoadFrom with a custom AssemblyHashAlgorithm is obsolete. Use overloads without an AssemblyHashAlgorithm.", DiagnosticId="SYSLIB0056", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
static member LoadFrom : string * byte[] * System.Configuration.Assemblies.AssemblyHashAlgorithm -> System.Reflection.Assembly
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")>]
static member LoadFrom : string * byte[] * System.Configuration.Assemblies.AssemblyHashAlgorithm -> System.Reflection.Assembly
static member LoadFrom : string * byte[] * System.Configuration.Assemblies.AssemblyHashAlgorithm -> System.Reflection.Assembly
Public Shared Function LoadFrom (assemblyFile As String, hashValue As Byte(), hashAlgorithm As AssemblyHashAlgorithm) As Assembly

Параметры

assemblyFile
String

Имя или путь файла, содержащего манифест сборки.

hashValue
Byte[]

Значение вычисляемого хэш-кода.

hashAlgorithm
AssemblyHashAlgorithm

Хэш-алгоритм, используемый для хэширования файлов и создания строгого имени.

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

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

Атрибуты

Исключения

Только .NET Core и .NET 5+ : во всех случаях.

assemblyFile равно null.

assemblyFile не найден или модуль, который вы пытаетесь загрузить, не указывает расширение имени файла.

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

–или–

assemblyFile указывает расположение, которое отключено на <основе loadFromRemoteSources>.

assemblyFile не является допустимой сборкой для текущей загруженной среды выполнения; например, 32-разрядная сборка в 64-разрядном процессе.

База кода, которая не начинается с "file://", была указана без обязательного WebPermission.

Параметр assemblyFile является пустой строкой ("").

Имя сборки превышает заданную системой максимальную длину.

Комментарии

Этот API не поддерживается в .NET Core/.NET 5+. Этот метод вызывается NotSupportedException при вызове. Вместо этого используйте LoadFrom(String).

Параметр assemblyFile должен ссылаться на универсальный код ресурса (URI) без escape-символов. Этот метод предоставляет escape-символы для всех недопустимых символов в URI.

Замечание

Протокол передачи файлов (FTP) не поддерживается. Если универсальный код ресурса (URI) является assemblyFile FTP-адресом, сборка не загружается. Исключение не возникает.

assemblyFile может быть абсолютным или относительным к текущему каталогу.

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

  • Контекст загрузки содержит сборки, найденные путем проверки: в глобальном кэше сборок, в хранилище сборок узла, если среда выполнения размещена или в ApplicationBasePrivateBinPath домене приложения. Большинство перегрузок метода Load загружают сборки в этот контекст.

  • Контекст загрузки содержит сборки, для которых пользователь предоставил путь, не включенный в пробу. LoadFrom, CreateInstanceFromи ExecuteAssembly являются примерами методов, которые загружаются по пути.

    Сведения <loadFromRemoteSources> о загрузке сборок из удаленных расположений.

  • Контекст только отражения содержит сборки, загруженные с ReflectionOnlyLoad помощью методов и ReflectionOnlyLoadFrom методов; код в этих контекстах не может быть выполнен.

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

Контекст загрузки позволяет загружать сборку из пути, который не включен в пробу, и тем не менее позволяет находить и загружать зависимости от этого пути, так как сведения о пути сохраняются контекстом.

Метод LoadFrom имеет следующие недостатки. Вместо этого рекомендуется использовать Load.

  • Если сборка с тем же удостоверением уже загружена, возвращает загруженную сборку, LoadFrom даже если был указан другой путь.

  • Если сборка загружена, LoadFromа затем сборка в контексте загрузки пытается загрузить ту же сборку по отображаемой имени, попытка загрузки завершается ошибкой. Это может произойти при десериализации сборки.

  • Если сборка загружена, LoadFromа путь проверки включает сборку с тем же удостоверением, но другое расположение, InvalidCastExceptionMissingMethodExceptionа также другое непредвиденное поведение.

  • LoadFrom требует FileIOPermissionAccess.Read и FileIOPermissionAccess.PathDiscovery, или WebPermission, по указанному пути.

  • Если для собственного образа существует assemblyFile, он не используется. Сборка не может быть загружена как доменно-независимая.

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

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

LoadFrom(String, Evidence, Byte[], AssemblyHashAlgorithm)

Внимание

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

Загружает сборку с именем файла или путем, доказательством безопасности, хэш-значением и хэш-алгоритмом.

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

Параметры

assemblyFile
String

Имя или путь файла, содержащего манифест сборки.

securityEvidence
Evidence

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

hashValue
Byte[]

Значение вычисляемого хэш-кода.

hashAlgorithm
AssemblyHashAlgorithm

Хэш-алгоритм, используемый для хэширования файлов и создания строгого имени.

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

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

Атрибуты

Исключения

assemblyFile равно null.

assemblyFile не найден или модуль, который вы пытаетесь загрузить, не указывает расширение имени файла.

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

–или–

Не securityEvidence является неоднозначным и определяется, что он является недопустимым.

–или–

assemblyFile указывает расположение, которое отключено на <основе loadFromRemoteSources>.

assemblyFile не является допустимой сборкой для текущей загруженной среды выполнения; например, 32-разрядная сборка в 64-разрядном процессе.

База кода, которая не начинается с "file://", была указана без обязательного WebPermission.

Параметр assemblyFile является пустой строкой ("").

Имя сборки превышает заданную системой максимальную длину.

Комментарии

Параметр assemblyFile должен ссылаться на универсальный код ресурса (URI) без escape-символов. Этот метод предоставляет escape-символы для всех недопустимых символов в URI.

Замечание

Протокол передачи файлов (FTP) не поддерживается. Если универсальный код ресурса (URI) является assemblyFile FTP-адресом, сборка не загружается. Исключение не возникает.

assemblyFile может быть абсолютным или относительным к текущему каталогу.

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

  • Контекст загрузки содержит сборки, найденные путем проверки: в GAC, в хранилище сборок узла, если среда выполнения размещена или в ApplicationBasePrivateBinPath домене приложения. Большинство перегрузок метода Load загружают сборки в этот контекст.

  • Контекст загрузки содержит сборки, для которых пользователь предоставил путь, не включенный в каталоги, искомые путем проверки. LoadFrom, CreateInstanceFromи ExecuteAssembly являются примерами методов, которые загружаются по пути.

    Сведения <loadFromRemoteSources> о загрузке сборок из удаленных расположений.

  • Контекст только отражения содержит сборки, загруженные с ReflectionOnlyLoad помощью методов и ReflectionOnlyLoadFrom методов; код в этих контекстах не может быть выполнен.

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

Контекст загрузки позволяет загружать сборку из пути, не включенного в пробу, и тем не менее позволяет находить и загружать зависимости от этого пути, так как сведения о пути сохраняются контекстом.

Метод LoadFrom имеет следующие недостатки. Вместо этого рекомендуется использовать Load.

  • Если сборка с тем же удостоверением уже загружена, возвращает загруженную сборку, LoadFrom даже если был указан другой путь.

  • Если сборка загружена, LoadFromа затем сборка в контексте загрузки пытается загрузить ту же сборку по отображаемой имени, попытка загрузки завершается ошибкой. Это может произойти при десериализации сборки.

  • Если сборка загружена, LoadFromа путь проверки включает сборку с тем же удостоверением, но другое расположение, InvalidCastExceptionMissingMethodExceptionа также другое непредвиденное поведение.

  • LoadFrom требует FileIOPermissionAccess.Read и FileIOPermissionAccess.PathDiscovery, или WebPermission, по указанному пути.

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

Предоставляются ли определенные разрешения сборке или не предоставляются на основе доказательств. Правила объединения доказательств сборки и безопасности приведены следующим образом:

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

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

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

  • При использовании метода с параметром LoadFromByte[] для загрузки изображения общего формата файлов объектов (COFF) доказательства объединяются. Zone, Url и Site наследуются от вызываемой сборки и HashStrongName взяты из сборки COFF.

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

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

LoadFrom(String)

Исходный код:
Assembly.cs
Исходный код:
Assembly.cs
Исходный код:
Assembly.cs
Исходный код:
Assembly.cs
Исходный код:
Assembly.cs

Загружает сборку с именем файла или путем.

public:
 static System::Reflection::Assembly ^ LoadFrom(System::String ^ assemblyFile);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")]
public static System.Reflection.Assembly LoadFrom(string assemblyFile);
public static System.Reflection.Assembly LoadFrom(string assemblyFile);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Types and members the loaded assembly depends on might be removed")>]
static member LoadFrom : string -> System.Reflection.Assembly
static member LoadFrom : string -> System.Reflection.Assembly
Public Shared Function LoadFrom (assemblyFile As String) As Assembly

Параметры

assemblyFile
String

Имя или путь файла, содержащего манифест сборки.

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

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

Атрибуты

Исключения

assemblyFile равно null.

assemblyFile не найден или модуль, который вы пытаетесь загрузить, не указывает расширение имени файла.

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

–или–

Только платформа .NET Framework: assemblyFile указывает расположение, которое отключено на <основе loadFromRemoteSources>.

assemblyFile не является допустимой сборкой для текущей загруженной среды выполнения; например, 32-разрядная сборка в 64-разрядном процессе.

База кода, которая не начинается с "file://", была указана без обязательного WebPermission.

Параметр assemblyFile является пустой строкой ("").

Имя сборки превышает заданную системой максимальную длину.

Примеры

В следующем примере загружается сборка с именем файла или путем.

Assembly SampleAssembly;
SampleAssembly = Assembly.LoadFrom("c:\\Sample.Assembly.dll");
// Obtain a reference to a method known to exist in assembly.
MethodInfo Method = SampleAssembly.GetTypes()[0].GetMethod("Method1");
// Obtain a reference to the parameters collection of the MethodInfo instance.
ParameterInfo[] Params = Method.GetParameters();
// Display information about method parameters.
// Param = sParam1
//   Type = System.String
//   Position = 0
//   Optional=False
foreach (ParameterInfo Param in Params)
{
    Console.WriteLine("Param=" + Param.Name.ToString());
    Console.WriteLine("  Type=" + Param.ParameterType.ToString());
    Console.WriteLine("  Position=" + Param.Position.ToString());
    Console.WriteLine("  Optional=" + Param.IsOptional.ToString());
}
Dim SampleAssembly As [Assembly]
SampleAssembly = [Assembly].LoadFrom("c:\Sample.Assembly.dll")
' Obtain a reference to a method known to exist in assembly.
Dim Method As MethodInfo = SampleAssembly.GetTypes()(0).GetMethod("Method1")
' Obtain a reference to the parameters collection of the MethodInfo instance.
Dim Params As ParameterInfo() = Method.GetParameters()
' Display information about method parameters.
' Param = sParam1
'   Type = System.String
'   Position = 0
'   Optional=False
For Each Param As ParameterInfo In Params
    Console.WriteLine(("Param=" + Param.Name.ToString()))
    Console.WriteLine(("  Type=" + Param.ParameterType.ToString()))
    Console.WriteLine(("  Position=" + Param.Position.ToString()))
    Console.WriteLine(("  Optional=" + Param.IsOptional.ToString()))
Next

Комментарии

Этот API присутствует в .NET Core для совместимости, но вместо этого рекомендуется использовать AssemblyLoadContext перегрузки.

Сборка загружается в сборку по умолчанию AssemblyLoadContext. Дополнительные сведения о загрузке сборок см. в разделе "Алгоритм загрузки управляемой сборки".

Параметр assemblyFile должен ссылаться на универсальный код ресурса (URI) без escape-символов. Этот метод предоставляет escape-символы для всех недопустимых символов в URI.

Замечание

.NET Framework только: протокол передачи файлов (FTP) не поддерживается. Если универсальный код ресурса (URI) является assemblyFile FTP-адресом, сборка не загружается. Исключение не возникает.

assemblyFile может быть абсолютным или относительным к текущему каталогу.

Только .NET Framework: Сборки можно загрузить в один из трех контекстов или загрузить без контекста:

  • Контекст загрузки содержит сборки, найденные путем проверки: в GAC, в хранилище сборок узла, если среда выполнения размещена или в ApplicationBasePrivateBinPath домене приложения. Большинство перегрузок метода Load загружают сборки в этот контекст.

  • Контекст загрузки содержит сборки, для которых пользователь предоставил путь, не включенный в каталоги, искомые путем проверки. Он также позволяет находить и загружать зависимости от этого пути, так как сведения о пути сохраняются контекстом. LoadFrom, CreateInstanceFromи ExecuteAssembly являются примерами методов, которые загружаются по пути.

    Сведения <loadFromRemoteSources> о загрузке сборок из удаленных расположений.

  • Контекст только отражения содержит сборки, загруженные с ReflectionOnlyLoad помощью методов и ReflectionOnlyLoadFrom методов; код в этих контекстах не может быть выполнен.

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

Метод LoadFrom имеет следующие недостатки. Вместо этого рекомендуется использовать Load.

  • Если сборка с тем же идентификатором уже загружена в контексте загрузки, LoadFrom возвращает загруженную сборку, даже если был указан другой путь.

  • Сборку можно загрузить в контексте load-from, даже если сборка с тем же удостоверением существует в контексте загрузки. Взаимодействие между двумя сборками не будет работать, что приводит к ошибкам, таким как InvalidCastException, MissingMethodExceptionили другое непредвиденное поведение.

  • Вызов LoadFrom с расположением, которое находится в пути проверки, загружает сборку в контексте загрузки, а не в контексте загрузки.

  • Если файл сборки, удостоверение которого передается политикой LoadFromперенаправления привязки, применяется политика, а сборка будет загружена из пути проверки в контексте загрузки.

  • Если сборка загружается в контексте загрузки, а затем сборка в контексте загрузки пытается загрузить ту же сборку по отображаемой имени, попытка загрузки завершается ошибкой. Это может произойти при десериализации сборки.

  • LoadFrom требует FileIOPermissionAccess.Read и FileIOPermissionAccess.PathDiscovery, или WebPermission, по указанному пути.

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

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

LoadFrom(String, Evidence)

Внимание

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

Загружает сборку с именем файла или путем и предоставляет доказательства безопасности.

public:
 static System::Reflection::Assembly ^ LoadFrom(System::String ^ assemblyFile, System::Security::Policy::Evidence ^ securityEvidence);
public static System.Reflection.Assembly LoadFrom(string assemblyFile, 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 LoadFrom which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public static System.Reflection.Assembly LoadFrom(string assemblyFile, System.Security.Policy.Evidence securityEvidence);
static member LoadFrom : 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 LoadFrom which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
static member LoadFrom : string * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Shared Function LoadFrom (assemblyFile As String, securityEvidence As Evidence) As Assembly

Параметры

assemblyFile
String

Имя или путь файла, содержащего манифест сборки.

securityEvidence
Evidence

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

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

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

Атрибуты

Исключения

assemblyFile равно null.

assemblyFile не найден или модуль, который вы пытаетесь загрузить, не указывает расширение имени файла.

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

–или–

Не securityEvidence является неоднозначным и определяется, что он является недопустимым.

–или–

assemblyFile указывает расположение, которое отключено на <основе loadFromRemoteSources>.

assemblyFile не является допустимой сборкой для текущей загруженной среды выполнения; например, 32-разрядная сборка в 64-разрядном процессе.

База кода, которая не начинается с "file://", была указана без обязательного WebPermission.

Параметр assemblyFile является пустой строкой ("").

Имя сборки превышает заданную системой максимальную длину.

Комментарии

Параметр assemblyFile должен ссылаться на универсальный код ресурса (URI) без escape-символов. Этот метод предоставляет escape-символы для всех недопустимых символов в URI.

Замечание

Протокол передачи файлов (FTP) не поддерживается. Если универсальный код ресурса (URI) является assemblyFile FTP-адресом, сборка не загружается. Исключение не возникает.

assemblyFile может быть абсолютным или относительным к текущему каталогу.

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

  • Контекст загрузки содержит сборки, найденные путем проверки: в GAC, в хранилище сборок узла, если среда выполнения размещена или в ApplicationBasePrivateBinPath домене приложения. Большинство перегрузок метода Load загружают сборки в этот контекст.

  • Контекст загрузки содержит сборки, для которых пользователь предоставил путь, не включенный в каталоги, искомые путем проверки. LoadFrom, CreateInstanceFromи ExecuteAssembly являются примерами методов, которые загружаются по пути.

    Сведения <loadFromRemoteSources> о загрузке сборок из удаленных расположений.

  • Контекст только отражения содержит сборки, загруженные с ReflectionOnlyLoad помощью методов и ReflectionOnlyLoadFrom методов; код в этих контекстах не может быть выполнен.

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

Контекст загрузки позволяет загружать сборку из пути, не включенного в пробу, и тем не менее позволяет находить и загружать зависимости от этого пути, так как сведения о пути сохраняются контекстом.

Метод LoadFrom имеет следующие недостатки. Вместо этого рекомендуется использовать Load.

  • Если сборка с тем же удостоверением уже загружена, возвращает загруженную сборку, LoadFrom даже если был указан другой путь.

  • Если сборка загружена, LoadFromа затем сборка в контексте загрузки пытается загрузить ту же сборку по отображаемой имени, попытка загрузки завершается ошибкой. Это может произойти при десериализации сборки.

  • Если сборка загружена, LoadFromа путь проверки включает сборку с тем же удостоверением, но другое расположение, InvalidCastExceptionMissingMethodExceptionа также другое непредвиденное поведение.

  • LoadFrom требует FileIOPermissionAccess.Read и FileIOPermissionAccess.PathDiscovery, или WebPermission, по указанному пути.

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

Предоставляются ли определенные разрешения сборке или не предоставляются на основе доказательств. Правила объединения доказательств сборки и безопасности приведены следующим образом:

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

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

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

  • При использовании метода с параметром LoadFromByte[] для загрузки изображения общего формата файлов объектов (COFF) доказательства объединяются. Zone, Url и Site наследуются от вызываемой сборки и HashStrongName взяты из сборки COFF.

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

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

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