다음을 통해 공유


Assembly.LoadFrom 메서드

정의

어셈블리를 로드합니다.

오버로드

LoadFrom(String, Evidence, Byte[], AssemblyHashAlgorithm)
사용되지 않음.

해당 파일 이름이나 경로가 지정된 어셈블리, 보안 증명 정보, 해시 값 및 해시 알고리즘을 로드합니다.

LoadFrom(String, Byte[], AssemblyHashAlgorithm)

해당 파일 이름이나 경로가 지정된 어셈블리, 해시 값 및 해시 알고리즘을 로드합니다.

LoadFrom(String)

해당 파일 이름이나 경로가 지정된 어셈블리를 로드합니다.

LoadFrom(String, Evidence)
사용되지 않음.

해당 파일 이름이나 경로가 지정된 어셈블리를 로드하고 보안 증명을 제공합니다.

설명

.NET Framework만 해당: 원격 위치에서 어셈블리 로드는 를 참조 <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.

해당 파일 이름이나 경로가 지정된 어셈블리, 보안 증명 정보, 해시 값 및 해시 알고리즘을 로드합니다.

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가 모호하며 올바르지 않은 것으로 확인되었습니다.

또는

assemblyFileloadFromRemoteSources에< 따라 사용하지 않도록 설정된 위치를 지정합니다>.

assemblyFile 는 현재 로드된 런타임에 유효한 어셈블리가 아닙니다. 예를 들어 64비트 프로세스의 32비트 어셈블리입니다.

"file://"로 시작하지 않는 Codebase가 필수 WebPermission 없이 지정되었습니다.

assemblyFile 매개 변수가 빈 문자열("")입니다.

어셈블리 이름이 시스템 정의 최대 길이를 초과합니다.

설명

매개 변수는 이 assemblyFile 스케이프 문자가 없는 URI를 참조해야 합니다. 이 메서드는 URI의 잘못된 모든 문자에 대한 이스케이프 문자를 제공합니다.

참고

FTP(파일 전송 프로토콜)는 지원되지 않습니다. 에 assemblyFile 제공된 URI가 FTP 주소이면 어셈블리가 로드되지 않습니다. 예외는 throw되지 않습니다.

assemblyFile 는 절대 또는 현재 디렉터리에 상대적일 수 있습니다.

어셈블리는 세 가지 컨텍스트 중 하나에 로드하거나 컨텍스트 없이 로드할 수 있습니다.

  • 로드 컨텍스트를 검색 하 여 찾은 어셈블리가 포함: GAC에 호스트 어셈블리에서는 런타임 호스트 되는 경우 또는 저장 된 ApplicationBasePrivateBinPath 애플리케이션 도메인입니다. Load 메서드의 대부분 오버로드는 어셈블리 이 컨텍스트에 로드합니다.

  • 부하로부터의 컨텍스트에는 사용자가 검색하여 검색한 디렉터리에 포함되지 않은 경로를 제공한 어셈블리가 포함됩니다. LoadFrom, CreateInstanceFromExecuteAssembly는 경로로 로드되는 메서드의 예제입니다.

    원격 위치에서 어셈블리 로드는 를 참조 <loadFromRemoteSources> 하세요.

  • 리플렉션 전용 컨텍스트에는 및 ReflectionOnlyLoadFrom 메서드로 로드된 어셈블리가 ReflectionOnlyLoad 포함되어 있습니다. 이러한 컨텍스트의 코드는 실행할 수 없습니다.

  • 사용자가 어셈블리를 생성하거나 찾은 경우 어셈블리는 컨텍스트에 없습니다. 이는 어셈블리를 포함하는 바이트 배열을 지정하는 메서드의 Load 오버로드를 사용하여 로드된 어셈블리와 리플렉션 내보내기로 만들어지고 디스크에 저장되지 않은 일시적인 동적 어셈블리에 적용됩니다.

로드-from 컨텍스트를 사용하면 검색에 포함되지 않은 경로에서 어셈블리를 로드할 수 있지만 경로 정보가 컨텍스트에 의해 유지 관리되기 때문에 해당 경로에 대한 종속성을 찾아 로드할 수 있습니다.

메서드에는 LoadFrom 다음과 같은 단점이 있습니다. 대신 Load을 사용하는 것이 좋습니다.

  • 같은 ID를 가진 어셈블리가 이미 로드되어 있으면 다른 경로가 지정된 경우에도 LoadFrom은 로드된 어셈블리를 반환합니다.

  • 어셈블리가 로 LoadFrom로드되고 나중에 로드 컨텍스트의 어셈블리가 표시 이름으로 동일한 어셈블리를 로드하려고 하면 로드 시도가 실패합니다. 어셈블리가 역직렬화되면 이 문제가 발생할 수 있습니다.

  • 어셈블리가 로 LoadFrom로드되고 검색 경로에 ID가 동일하지만 위치가 다른 어셈블리, InvalidCastException, MissingMethodException또는 기타 예기치 않은 동작이 발생할 수 있습니다.

  • LoadFrom은 지정된 경로에서 FileIOPermissionAccess.ReadFileIOPermissionAccess.PathDiscovery 또는 WebPermission을 요구합니다.

  • 에 대한 assemblyFile네이티브 이미지가 있는 경우 사용되지 않습니다. 어셈블리를 도메인 중립으로 로드할 수 없습니다.

어셈블리에 대한 특정 권한 부여 여부는 증명 정보를 바탕으로 합니다. 어셈블리 및 보안 증거 병합에 대한 규칙은 다음과 같습니다.

  • 매개 변수가 없는 Evidence 메서드를 LoadFrom 사용하면 로더가 제공하는 증명 정보로 어셈블리가 로드됩니다.

  • 매개 변수와 함께 메서드를 LoadFromEvidence 사용하면 증명 정보 조각이 병합됩니다. 메서드에 대한 인수 LoadFrom 로 제공된 증거 조각은 로더가 제공한 증거 조각을 대체합니다.

  • 동일한 어셈블리에서 이 메서드를 두 번 이상 호출하지만 다른 증거가 지정된 경우 공용 언어 런타임은 다른 증거 사양의 같음과 무결성을 확인할 수 없으므로 을 throw FileLoadException 하지 않습니다. 첫 번째 성공 증거는 사용되는 증거입니다.

  • 매개 변수가 있는 메서드를 LoadFromByte[] 사용하여 COFF(공용 개체 파일 형식) 이미지를 로드하는 경우 증명 정보가 결합됩니다. ZoneUrlSite 는 호출 어셈블리에서 상속되며 COFF StrongName 어셈 Hash 블리에서 가져옵니다.

  • 매개 변수 Evidence 와 함께 메서드를 LoadFromByte[] 사용하고 COFF 이미지를 로드하는 경우 제공된 증명 정보만 사용됩니다. 호출 어셈블리의 증거와 COFF 이미지의 증거는 무시됩니다.

적용 대상

LoadFrom(String, Byte[], AssemblyHashAlgorithm)

Source:
Assembly.cs
Source:
Assembly.cs
Source:
Assembly.cs

해당 파일 이름이나 경로가 지정된 어셈블리, 해시 값 및 해시 알고리즘을 로드합니다.

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

파일을 해시하고 강력한 이름을 생성하는 데 사용된 해시 알고리즘입니다.

반환

로드된 어셈블리입니다.

예외

.NET Core 및 .NET 5+ 전용: 모든 경우

assemblyFile이(가) null인 경우

assemblyFile이 없거나 로드하려는 모듈이 파일 이름 확장명을 지정하지 않습니다.

assemblyFile 는 현재 로드된 런타임에 유효한 어셈블리가 아닙니다. 예를 들어 64비트 프로세스의 32비트 어셈블리입니다.

"file://"로 시작하지 않는 Codebase가 필수 WebPermission 없이 지정되었습니다.

assemblyFile 매개 변수가 빈 문자열("")입니다.

어셈블리 이름이 시스템 정의 최대 길이를 초과합니다.

설명

.NET Core 및 .NET 5 이상에서는 이 메서드가 호출되면 throw됩니다 NotSupportedException . 대신 LoadFrom(String)를 사용하세요.

매개 변수는 이 assemblyFile 스케이프 문자가 없는 URI를 참조해야 합니다. 이 메서드는 URI의 잘못된 모든 문자에 대한 이스케이프 문자를 제공합니다.

참고

FTP(파일 전송 프로토콜)는 지원되지 않습니다. 에 assemblyFile 제공된 URI가 FTP 주소이면 어셈블리가 로드되지 않습니다. 예외는 throw되지 않습니다.

assemblyFile 는 절대 또는 현재 디렉터리에 상대적일 수 있습니다.

어셈블리는 세 가지 컨텍스트 중 하나에 로드하거나 컨텍스트 없이 로드할 수 있습니다.

  • 로드 컨텍스트를 검색 하 여 찾은 어셈블리가 포함: 전역 어셈블리 캐시에 호스트 어셈블리에서는 런타임 호스트 되는 경우 또는 저장 된 ApplicationBasePrivateBinPath 애플리케이션 도메인입니다. Load 메서드의 대부분 오버로드는 어셈블리 이 컨텍스트에 로드합니다.

  • 부하로부터의 컨텍스트에는 사용자가 검색에 포함되지 않은 경로를 제공한 어셈블리가 포함되어 있습니다. LoadFrom, CreateInstanceFromExecuteAssembly는 경로로 로드되는 메서드의 예제입니다.

    원격 위치에서 어셈블리 로드는 를 참조 <loadFromRemoteSources> 하세요.

  • 리플렉션 전용 컨텍스트에는 및 ReflectionOnlyLoadFrom 메서드로 로드된 어셈블리가 ReflectionOnlyLoad 포함되어 있습니다. 이러한 컨텍스트의 코드는 실행할 수 없습니다.

  • 사용자가 어셈블리를 생성하거나 찾은 경우 어셈블리는 컨텍스트에 없습니다. 이는 어셈블리를 포함하는 바이트 배열을 지정하는 메서드의 Load 오버로드를 사용하여 로드된 어셈블리와 리플렉션 내보내기로 만들어지고 디스크에 저장되지 않은 일시적인 동적 어셈블리에 적용됩니다.

부하에서 컨텍스트를 사용하면 검색에 포함되지 않은 경로에서 어셈블리를 로드할 수 있지만 경로 정보가 컨텍스트에서 유지 관리되기 때문에 해당 경로에 대한 종속성을 찾아 로드할 수 있습니다.

메서드에는 LoadFrom 다음과 같은 단점이 있습니다. 대신 Load을 사용하는 것이 좋습니다.

  • 같은 ID를 가진 어셈블리가 이미 로드되어 있으면 다른 경로가 지정된 경우에도 LoadFrom은 로드된 어셈블리를 반환합니다.

  • 어셈블리가 로 LoadFrom로드되고 나중에 로드 컨텍스트의 어셈블리가 표시 이름으로 동일한 어셈블리를 로드하려고 하면 로드 시도가 실패합니다. 어셈블리가 역직렬화되면 이 문제가 발생할 수 있습니다.

  • 어셈블리가 로 LoadFrom로드되고 검색 경로에 ID가 동일하지만 위치가 다른 어셈블리, InvalidCastException, MissingMethodException또는 기타 예기치 않은 동작이 발생할 수 있습니다.

  • LoadFrom은 지정된 경로에서 FileIOPermissionAccess.ReadFileIOPermissionAccess.PathDiscovery 또는 WebPermission을 요구합니다.

  • 에 대한 assemblyFile네이티브 이미지가 있는 경우 사용되지 않습니다. 어셈블리는 도메인 중립적으로 로드될 수 없습니다.

어셈블리는 로더가 제공하는 증명 정보로 로드됩니다.

적용 대상

LoadFrom(String)

Source:
Assembly.cs
Source:
Assembly.cs
Source:
Assembly.cs

해당 파일 이름이나 경로가 지정된 어셈블리를 로드합니다.

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이 없거나 로드하려는 모듈이 파일 확장명을 지정하지 않습니다.

찾은 파일을 로드할 수 없습니다.

또는

.NET Framework만 해당: assemblyFileloadFromRemoteSources에< 따라 사용하지 않도록 설정된 위치를 지정합니다>.

assemblyFile 는 현재 로드된 런타임에 유효한 어셈블리가 아닙니다. 예를 들어 64비트 프로세스의 32비트 어셈블리입니다.

"file://"로 시작하지 않는 Codebase가 필수 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(파일 전송 프로토콜)는 지원되지 않습니다. 에 assemblyFile 제공된 URI가 FTP 주소이면 어셈블리가 로드되지 않습니다. 예외는 throw되지 않습니다.

assemblyFile 는 절대 또는 현재 디렉터리에 상대적일 수 있습니다.

.NET Framework만 해당: 어셈블리는 세 가지 컨텍스트 중 하나에 로드하거나 컨텍스트 없이 로드할 수 있습니다.

  • 로드 컨텍스트를 검색 하 여 찾은 어셈블리가 포함: GAC에 호스트 어셈블리에서는 런타임 호스트 되는 경우 또는 저장 된 ApplicationBasePrivateBinPath 애플리케이션 도메인입니다. Load 메서드의 대부분 오버로드는 어셈블리 이 컨텍스트에 로드합니다.

  • 부하로부터의 컨텍스트에는 사용자가 검색하여 검색한 디렉터리에 포함되지 않은 경로를 제공한 어셈블리가 포함됩니다. 또한 경로 정보가 컨텍스트에 의해 유지 관리되기 때문에 해당 경로에 대한 종속성을 찾아 로드할 수 있습니다. LoadFrom, CreateInstanceFromExecuteAssembly는 경로로 로드되는 메서드의 예제입니다.

    원격 위치에서 어셈블리 로드는 를 참조 <loadFromRemoteSources> 하세요.

  • 리플렉션 전용 컨텍스트에는 및 ReflectionOnlyLoadFrom 메서드로 로드된 어셈블리가 ReflectionOnlyLoad 포함되어 있습니다. 이러한 컨텍스트의 코드는 실행할 수 없습니다.

  • 사용자가 어셈블리를 생성하거나 찾은 경우 어셈블리는 컨텍스트에 없습니다. 이는 어셈블리를 포함하는 바이트 배열을 지정하는 메서드의 Load 오버로드를 사용하여 로드된 어셈블리와 리플렉션 내보내기로 만들어지고 디스크에 저장되지 않은 일시적인 동적 어셈블리에 적용됩니다.

메서드에는 LoadFrom 다음과 같은 단점이 있습니다. 대신 Load을 사용하는 것이 좋습니다.

  • 같은 ID를 가진 어셈블리가 이미 로드 소스 컨텍스트에서 로드되어 있으면 다른 경로가 지정된 경우에도 LoadFrom은 로드된 어셈블리를 반환합니다.

  • 동일한 ID를 가진 어셈블리가 부하 컨텍스트에 있더라도 로드 원본 컨텍스트에서 어셈블리를 로드할 수 있습니다. 두 어셈블리 간의 상호 운용성이 작동하지 않아 , MissingMethodException또는 기타 예기치 않은 동작과 같은 InvalidCastException오류가 발생합니다.

  • 검색 경로에 있는 위치로 를 호출 LoadFrom 하면 로드 컨텍스트가 아닌 부하 컨텍스트에서 어셈블리가 로드됩니다.

  • 바인딩 리디렉션 정책에 의해 ID가 고브렌된 어셈블리 파일이 에 LoadFrom전달되면 정책이 적용되고 로드 컨텍스트의 검색 경로에서 어셈블리가 로드됩니다.

  • 어셈블리가 로드된 컨텍스트에서 로드되고 나중에 로드 컨텍스트의 어셈블리가 표시 이름으로 동일한 어셈블리를 로드하려고 하면 로드 시도가 실패합니다. 어셈블리가 역직렬화되면 이 문제가 발생할 수 있습니다.

  • LoadFrom은 지정된 경로에서 FileIOPermissionAccess.ReadFileIOPermissionAccess.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가 모호하며 올바르지 않은 것으로 확인되었습니다.

또는

assemblyFileloadFromRemoteSources에< 따라 사용하지 않도록 설정된 위치를 지정합니다>.

assemblyFile 는 현재 로드된 런타임에 유효한 어셈블리가 아닙니다. 예를 들어 64비트 프로세스의 32비트 어셈블리입니다.

"file://"로 시작하지 않는 Codebase가 필수 WebPermission 없이 지정되었습니다.

assemblyFile 매개 변수가 빈 문자열("")입니다.

어셈블리 이름이 시스템 정의 최대 길이를 초과합니다.

설명

매개 변수는 이 assemblyFile 스케이프 문자가 없는 URI를 참조해야 합니다. 이 메서드는 URI의 잘못된 모든 문자에 대한 이스케이프 문자를 제공합니다.

참고

FTP(파일 전송 프로토콜)는 지원되지 않습니다. 에 assemblyFile 제공된 URI가 FTP 주소이면 어셈블리가 로드되지 않습니다. 예외는 throw되지 않습니다.

assemblyFile 는 절대 또는 현재 디렉터리에 상대적일 수 있습니다.

어셈블리는 세 가지 컨텍스트 중 하나에 로드하거나 컨텍스트 없이 로드할 수 있습니다.

  • 로드 컨텍스트를 검색 하 여 찾은 어셈블리가 포함: GAC에 호스트 어셈블리에서는 런타임 호스트 되는 경우 또는 저장 된 ApplicationBasePrivateBinPath 애플리케이션 도메인입니다. Load 메서드의 대부분 오버로드는 어셈블리 이 컨텍스트에 로드합니다.

  • 부하로부터의 컨텍스트에는 사용자가 검색하여 검색한 디렉터리에 포함되지 않은 경로를 제공한 어셈블리가 포함됩니다. LoadFrom, CreateInstanceFromExecuteAssembly는 경로로 로드되는 메서드의 예제입니다.

    원격 위치에서 어셈블리 로드는 를 참조 <loadFromRemoteSources> 하세요.

  • 리플렉션 전용 컨텍스트에는 및 ReflectionOnlyLoadFrom 메서드로 로드된 어셈블리가 ReflectionOnlyLoad 포함되어 있습니다. 이러한 컨텍스트의 코드는 실행할 수 없습니다.

  • 사용자가 어셈블리를 생성하거나 찾은 경우 어셈블리는 컨텍스트에 없습니다. 이는 어셈블리를 포함하는 바이트 배열을 지정하는 메서드의 Load 오버로드를 사용하여 로드된 어셈블리와 리플렉션 내보내기로 만들어지고 디스크에 저장되지 않은 일시적인 동적 어셈블리에 적용됩니다.

로드-from 컨텍스트를 사용하면 검색에 포함되지 않은 경로에서 어셈블리를 로드할 수 있지만 경로 정보가 컨텍스트에 의해 유지 관리되기 때문에 해당 경로에 대한 종속성을 찾아 로드할 수 있습니다.

메서드에는 LoadFrom 다음과 같은 단점이 있습니다. 대신 Load을 사용하는 것이 좋습니다.

  • 같은 ID를 가진 어셈블리가 이미 로드되어 있으면 다른 경로가 지정된 경우에도 LoadFrom은 로드된 어셈블리를 반환합니다.

  • 어셈블리가 로 LoadFrom로드되고 나중에 로드 컨텍스트의 어셈블리가 표시 이름으로 동일한 어셈블리를 로드하려고 하면 로드 시도가 실패합니다. 어셈블리가 역직렬화되면 이 문제가 발생할 수 있습니다.

  • 어셈블리가 로 LoadFrom로드되고 검색 경로에 ID가 동일하지만 위치가 다른 어셈블리, InvalidCastException, MissingMethodException또는 기타 예기치 않은 동작이 발생할 수 있습니다.

  • LoadFrom은 지정된 경로에서 FileIOPermissionAccess.ReadFileIOPermissionAccess.PathDiscovery 또는 WebPermission을 요구합니다.

  • 에 대한 assemblyFile네이티브 이미지가 있는 경우 사용되지 않습니다. 어셈블리를 도메인 중립으로 로드할 수 없습니다.

어셈블리에 대한 특정 권한 부여 여부는 증명 정보를 바탕으로 합니다. 어셈블리 및 보안 증거 병합에 대한 규칙은 다음과 같습니다.

  • 매개 변수가 없는 Evidence 메서드를 LoadFrom 사용하면 로더가 제공하는 증명 정보로 어셈블리가 로드됩니다.

  • 매개 변수와 함께 메서드를 LoadFromEvidence 사용하면 증명 정보 조각이 병합됩니다. 메서드에 대한 인수 LoadFrom 로 제공된 증거 조각은 로더가 제공한 증거 조각을 대체합니다.

  • 동일한 어셈블리에서 이 메서드를 두 번 이상 호출하지만 다른 증거가 지정된 경우 공용 언어 런타임은 다른 증거 사양의 같음과 무결성을 확인할 수 없으므로 을 throw FileLoadException 하지 않습니다. 첫 번째 성공 증거는 사용되는 증거입니다.

  • 매개 변수가 있는 메서드를 LoadFromByte[] 사용하여 COFF(공용 개체 파일 형식) 이미지를 로드하는 경우 증명 정보가 결합됩니다. ZoneUrlSite 는 호출 어셈블리에서 상속되며 COFF StrongName 어셈 Hash 블리에서 가져옵니다.

  • 매개 변수 Evidence 와 함께 메서드를 LoadFromByte[] 사용하고 COFF 이미지를 로드하는 경우 제공된 증명 정보만 사용됩니다. 호출 어셈블리의 증거와 COFF 이미지의 증거는 무시됩니다.

추가 정보

적용 대상