Assembly.LoadFrom 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
加载程序集。
重载
LoadFrom(String, Evidence, Byte[], AssemblyHashAlgorithm) |
已过时。
已过时。
通过给定程序集文件名或路径、安全证据、哈希值及哈希算法来加载程序集。 |
LoadFrom(String, Byte[], AssemblyHashAlgorithm) |
通过给定程序集文件名或路径、哈希值及哈希算法来加载程序集。 |
LoadFrom(String) |
已知程序集的文件名或路径,加载程序集。 |
LoadFrom(String, Evidence) |
已过时。
已过时。
在给定程序集的文件名或路径并提供安全证据的情况下,加载程序集。 |
注解
从 .NET Framework 4 开始,默认情况下禁用在从远程位置加载的程序集中执行代码的能力,并且对 方法的调用 LoadFrom
将引发 FileLoadException 。 若要加载程序集并执行其代码,必须:
为程序集显式创建沙盒。 (如何:在沙盒.) 中运行部分受信任的代码
将配置元素的 属性设置为 ,以完全信任
enabled
<loadFromRemoteSources>
运行程序集的代码true
。 有关详细信息,请参阅<loadFromRemoteSources>
配置元素一文。
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.
注意
现已弃用此 API。
通过给定程序集文件名或路径、安全证据、哈希值及哈希算法来加载程序集。
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);
[System.Obsolete]
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
[<System.Obsolete>]
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
,或者你正在试图加载的模块未指定文件名扩展。
assemblyFile
不是有效的程序集 ;例如 64 位进程中的 32 位程序集。 有关详细信息,请参阅异常主题。
- 或 -
当前加载的是公共语言运行时 2.0 版或更高版本,而 assemblyFile
是用更高的版本编译的。
指定了不以“file://”开头的基本代码,且没有所需的 WebPermission。
assemblyFile
参数为空字符串 ("")。
程序集名称超过系统定义的最大长度。
注解
参数 assemblyFile
必须引用不带转义字符的 URI。 此方法为 URI 中所有无效字符提供转义字符。
备注
不支持使用 FTP (文件) 传输协议。 如果为 提供的 URI assemblyFile
是 FTP 地址,则不加载程序集。 不会引发异常。
assemblyFile
可能是绝对的或相对于当前目录的,并且程序集将加载到调用方的域中。
程序集可以加载到以下三个上下文中之一,也可以在没有上下文的情况下加载:
加载上下文包含通过探测找到的程序集:在 GAC 中、主机程序集存储区中(如果托管运行时)或应用程序域的 和 ApplicationBase PrivateBinPath 中。 Load 方法的大多数重载都将程序集加载到此上下文中。
从上下文加载包含程序集,用户为程序集提供的路径未包含在通过探测搜索的目录中。 LoadFrom、CreateInstanceFrom 和 ExecuteAssembly 都是通过路径加载的方法的示例。
从 .NET Framework 4 开始,如果 的 URI 指定远程位置,则默认情况下将禁用程序集加载,并且 方法
assemblyFile
LoadFrom
将引发 FileLoadException 。 若要启用从远程位置加载的代码的执行,可以使用<loadFromRemoteSources>
配置元素。仅反射上下文包含使用 和 方法加载的 ReflectionOnlyLoad 程序集 ReflectionOnlyLoadFrom ;这些上下文中的代码无法执行。
如果用户生成或找到了程序集,则它未在任何上下文中。 这适用于使用 方法的重载加载的程序集(该方法指定包含程序集的字节数组)以及使用反射发出创建且未保存到磁盘的暂时性动态 Load 程序集。
从上下文加载允许从未包含在探测中的路径加载程序集,还允许找到并加载该路径上的依赖项,因为路径信息由上下文维护。
如果已加载一个具有相同标识的程序集,则即使指定了不同的路径,LoadFrom 仍返回已加载的程序集。
如果使用 加载程序集,之后加载上下文中的程序集尝试按显示名称加载同一程序集,则 LoadFrom 加载尝试将失败。 对程序集进行反序列化时,可能发生这种情况。
如果使用 加载程序集,并且探测路径包含具有相同标识但位置不同的程序集,则可能会发生 、 或其他 LoadFrom InvalidCastException MissingMethodException 意外行为。
LoadFrom 需要对指定路径的 FileIOPermissionAccess.Read 和 FileIOPermissionAccess.PathDiscovery 或 WebPermission。
如果 的本机映像存在
assemblyFile
,则不使用。 程序集不能作为非特定域加载。在 .NET Framework 1.0 和 1.1 版中,不会应用策略。
是否将特定的权限授予程序集是基于证据的。 程序集和安全证据合并的规则如下所示:
将 方法 LoadFrom 与 参数 Evidence 一同使用时,将合并证据片段。 作为方法的参数提供的证据片段将取代加载程序 LoadFrom 提供的证据片段。
如果在同一程序集上多次调用此方法,但指定了不同的证据,则公共语言运行时不会引发 ,因为无法确定不同证据规范的相等性与 FileLoadException 完整性。 首先成功的证据是所使用的证据。
将 方法与 参数结合使用以在 COFF 映像中加载 (LoadFrom
Byte[]
对象) 时,将合并证据。Zone``Url
、Site
和 继承自调用程序集,并且 和Hash
StrongName
取自 COFF 程序集。将 方法 LoadFrom 与 参数一起
Byte[]
使用并加载 Evidence COFF 图像时,只会使用提供的证据。 将忽略调用程序集的证据和 COFF 映像的证据。
适用于
LoadFrom(String, Byte[], AssemblyHashAlgorithm)
通过给定程序集文件名或路径、哈希值及哈希算法来加载程序集。
public:
static System::Reflection::Assembly ^ LoadFrom(System::String ^ assemblyFile, cli::array <System::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);
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
用于对文件进行哈希处理并生成强名称的哈希算法。
返回
加载的程序集。
例外
assemblyFile
为 null
。
未找到 assemblyFile
,或者你正在试图加载的模块未指定文件扩展名。
assemblyFile
不是有效的程序集 ;例如 64 位进程中的 32 位程序集。 有关详细信息,请参阅异常主题。
- 或 -
assemblyFile
使用高于当前所加载版本的公共语言运行时版本编译而成。
指定了不以“file://”开头的基本代码,且没有所需的 WebPermission。
assemblyFile
参数为空字符串 ("")。
程序集名称超过系统定义的最大长度。
注解
参数 assemblyFile
必须引用不带转义字符的 URI。 此方法为 URI 中所有无效字符提供转义字符。
备注
不支持使用 FTP (文件) 传输协议。 如果为 提供的 URI assemblyFile
是 FTP 地址,则不加载程序集。 不会引发异常。
assemblyFile
可能是绝对的或相对于当前目录的,并且程序集将加载到调用方的域中。
程序集可以加载到以下三个上下文中之一,也可以在没有上下文的情况下加载:
加载上下文包含通过探测找到的程序集:在全局程序集缓存中、主机程序集存储区中(如果托管运行时)或应用程序域的 ApplicationBase PrivateBinPath 和 中。 Load 方法的大多数重载都将程序集加载到此上下文中。
load-from 上下文包含程序集,用户为这些程序集提供的路径未包含在探测中。 LoadFrom、CreateInstanceFrom 和 ExecuteAssembly 都是通过路径加载的方法的示例。
从 .NET Framework 4 开始,如果 的 URI 指定远程位置,则默认情况下将禁用程序集加载,并且 方法
assemblyFile
LoadFrom
将引发 FileLoadException 。 若要启用从远程位置加载的代码的执行,可以使用<loadFromRemoteSources>
配置元素。仅反射上下文包含使用 和 方法加载的 ReflectionOnlyLoad 程序集 ReflectionOnlyLoadFrom ;这些上下文中的代码无法执行。
如果用户生成或找到了程序集,则它未在任何上下文中。 这适用于使用 方法的重载加载的程序集(该方法指定包含程序集的字节数组)以及使用反射发出创建且未保存到磁盘的暂时性动态 Load 程序集。
从上下文加载允许从未包含在探测中的路径加载程序集,还允许找到并加载该路径上的依赖项,因为路径信息由上下文维护。
如果已加载一个具有相同标识的程序集,则即使指定了不同的路径,LoadFrom 仍返回已加载的程序集。
如果使用 加载程序集,之后加载上下文中的程序集尝试按显示名称加载同一程序集,则 LoadFrom 加载尝试将失败。 对程序集进行反序列化时,可能发生这种情况。
如果使用 加载程序集,并且探测路径包含具有相同标识但位置不同的程序集,则可能会发生 、 或其他 LoadFrom InvalidCastException MissingMethodException 意外行为。
LoadFrom 需要对指定路径的 FileIOPermissionAccess.Read 和 FileIOPermissionAccess.PathDiscovery 或 WebPermission。
如果 的本机映像存在
assemblyFile
,则不使用。 程序集不能以非特定于域的方式加载。
加载程序集时,会提供加载程序提供的证据。
适用于
LoadFrom(String)
已知程序集的文件名或路径,加载程序集。
public:
static System::Reflection::Assembly ^ LoadFrom(System::String ^ assemblyFile);
public static System.Reflection.Assembly LoadFrom (string assemblyFile);
static member LoadFrom : string -> System.Reflection.Assembly
Public Shared Function LoadFrom (assemblyFile As String) As Assembly
参数
- assemblyFile
- String
包含程序集清单的文件的名称或路径。
返回
加载的程序集。
例外
assemblyFile
为 null
。
未找到 assemblyFile
,或者你正在试图加载的模块未指定文件名扩展。
assemblyFile
不是有效的程序集 ;例如 64 位进程中的 32 位程序集。 有关详细信息,请参阅异常主题。
- 或 -
当前加载的是公共语言运行时 2.0 版或更高版本,而 assemblyFile
是用更高的版本编译的。
指定了不以“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.
array<ParameterInfo^>^ Params = Method->GetParameters();
// Display information about method parameters.
// Param = sParam1
// Type = System::String
// Position = 0
// Optional=False
for each ( ParameterInfo^ Param in Params )
{
Console::WriteLine( "Param= {0}", Param->Name );
Console::WriteLine( " Type= {0}", Param->ParameterType );
Console::WriteLine( " Position= {0}", Param->Position );
Console::WriteLine( " Optional= {0}", Param->IsOptional );
}
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
注解
参数 assemblyFile
必须引用不带转义字符的 URI。 此方法为 URI 中所有无效字符提供转义字符。
备注
不支持使用 FTP (文件) 传输协议。 如果为 提供的 URI assemblyFile
是 FTP 地址,则不加载程序集。 不会引发异常。
assemblyFile
可能是绝对的或相对于当前目录的,并且程序集将加载到调用方的域中。
程序集可以加载到以下三个上下文中之一,也可以在没有上下文的情况下加载:
加载上下文包含通过探测找到的程序集:在 GAC 中、主机程序集存储区中(如果托管运行时)或应用程序域的 和 ApplicationBase PrivateBinPath 中。 Load 方法的大多数重载都将程序集加载到此上下文中。
从上下文加载包含程序集,用户为程序集提供的路径未包含在通过探测搜索的目录中。 LoadFrom、CreateInstanceFrom 和 ExecuteAssembly 都是通过路径加载的方法的示例。
从 .NET Framework 4 开始,如果 的 URI 指定远程位置,则默认情况下将禁用程序集加载,并且 方法
assemblyFile
LoadFrom
将引发 FileLoadException 。 若要启用从远程位置加载的代码的执行,可以使用<loadFromRemoteSources>
配置元素。仅反射上下文包含使用 和 方法加载的 ReflectionOnlyLoad 程序集 ReflectionOnlyLoadFrom ;这些上下文中的代码无法执行。
如果用户生成或找到了程序集,则它未在任何上下文中。 这适用于使用 方法的重载加载的程序集(该方法指定包含程序集的字节数组)以及使用反射发出创建且未保存到磁盘的暂时性动态 Load 程序集。
从上下文加载允许从未包含在探测中的路径加载程序集,还允许找到并加载该路径上的依赖项,因为路径信息由上下文维护。
如果已加载一个具有相同标识的程序集,则即使指定了不同的路径,LoadFrom 仍返回已加载的程序集。
如果使用 加载程序集,之后加载上下文中的程序集尝试按显示名称加载同一程序集,则 LoadFrom 加载尝试将失败。 当取消序列化程序集时,可能会发生这种情况。
如果使用 加载程序集,并且探测路径包含具有相同标识但位置不同的程序集,则可能会发生 、 或其他 LoadFrom InvalidCastException MissingMethodException 意外行为。
LoadFrom 需要对指定路径的 FileIOPermissionAccess.Read 和 FileIOPermissionAccess.PathDiscovery 或 WebPermission。
如果 的本机映像存在
assemblyFile
,则不使用。 程序集不能作为非特定域加载。在 .NET Framework 1.0 和 1.1 版中,不会应用策略。
适用于
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.
注意
现已弃用此 API。
在给定程序集的文件名或路径并提供安全证据的情况下,加载程序集。
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);
[System.Obsolete]
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
[<System.Obsolete>]
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
,或者你正在试图加载的模块未指定文件名扩展。
assemblyFile
不是有效的程序集 ;例如 64 位进程中的 32 位程序集。 有关详细信息,请参阅异常主题。
- 或 -
当前加载的是公共语言运行时 2.0 版或更高版本,而 assemblyFile
是用更高的版本编译的。
指定了不以“file://”开头的基本代码,且没有所需的 WebPermission。
assemblyFile
参数为空字符串 ("")。
程序集名称超过系统定义的最大长度。
注解
参数 assemblyFile
必须引用不带转义字符的 URI。 此方法为 URI 中所有无效字符提供转义字符。
备注
不支持使用 FTP (文件) 传输协议。 如果为 提供的 URI assemblyFile
是 FTP 地址,则不加载程序集。 不会引发异常。
assemblyFile
可能是绝对的或相对于当前目录的,并且程序集将加载到调用方的域中。
程序集可以加载到以下三个上下文中之一,也可以在没有上下文的情况下加载:
加载上下文包含通过探测找到的程序集:在 GAC 中、主机程序集存储区中(如果托管运行时)或应用程序域的 和 ApplicationBase PrivateBinPath 中。 Load 方法的大多数重载都将程序集加载到此上下文中。
从上下文加载包含程序集,用户为程序集提供的路径未包含在通过探测搜索的目录中。 LoadFrom、CreateInstanceFrom 和 ExecuteAssembly 都是通过路径加载的方法的示例。
从 .NET Framework 4 开始,如果 的 URI 指定远程位置,则默认情况下将禁用程序集加载,并且 方法
assemblyFile
LoadFrom
将引发 FileLoadException 。 若要启用从远程位置加载的代码的执行,可以使用<loadFromRemoteSources>
配置元素。仅反射上下文包含使用 和 方法加载的 ReflectionOnlyLoad 程序集 ReflectionOnlyLoadFrom ;这些上下文中的代码无法执行。
如果用户生成或找到了程序集,则它未在任何上下文中。 这适用于使用 方法的重载加载的程序集(该方法指定包含程序集的字节数组)以及使用反射发出创建且未保存到磁盘的暂时性动态 Load 程序集。
从上下文加载允许从未包含在探测中的路径加载程序集,还允许找到并加载该路径上的依赖项,因为路径信息由上下文维护。
如果已加载一个具有相同标识的程序集,则即使指定了不同的路径,LoadFrom 仍返回已加载的程序集。
如果使用 加载程序集,之后加载上下文中的程序集尝试按显示名称加载同一程序集,则 LoadFrom 加载尝试将失败。 对程序集进行反序列化时,可能发生这种情况。
如果使用 加载程序集,并且探测路径包含具有相同标识但位置不同的程序集,则可能会发生 、 或其他 LoadFrom InvalidCastException MissingMethodException 意外行为。
LoadFrom 需要对指定路径的 FileIOPermissionAccess.Read 和 FileIOPermissionAccess.PathDiscovery 或 WebPermission。
如果 的本机映像存在
assemblyFile
,则不使用。 程序集不能作为非特定域加载。在 .NET Framework 1.0 和 1.1 版中,不会应用策略。
是否将特定的权限授予程序集是基于证据的。 程序集和安全证据合并的规则如下所示:
将 方法 LoadFrom 与 参数 Evidence 一同使用时,将合并证据片段。 作为方法的参数提供的证据片段将取代加载程序 LoadFrom 提供的证据片段。
如果在同一程序集上多次调用此方法,但指定了不同的证据,则公共语言运行时不会引发 ,因为无法确定不同证据规范的相等性与 FileLoadException 完整性。 首先成功的证据是所使用的证据。
将 方法与 参数结合使用时,在 COFF 映像中加载 LoadFrom
Byte[]
(对象) ,将合并证据。Zone``Url
、Site
和 继承自调用程序集,并且 和Hash
StrongName
取自 COFF 程序集。将 方法 LoadFrom 与 参数一起
Byte[]
使用并加载 Evidence COFF 图像时,只会使用提供的证据。 将忽略调用程序集的证据和 COFF 映像的证据。