共用方式為


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

雜湊演算法,用於雜湊檔案和用來產生強式名稱 (Strong Name)。

傳回

載入的組件。

屬性

例外狀況

assemblyFilenull

找不到assemblyFile ,或您想載入的模組並未指定檔案的副檔名。

無法載入找到的檔案。

-或-

securityEvidence 並非模稜兩可,而且已判定為無效。

-或-

assemblyFile 會指定根據 <loadFromRemoteSources> 停用的位置。

assemblyFile 不是目前載入運行時間的有效元件;例如,64 位進程中的32位元件。

指定了並非以 "file://" 開頭的程式碼基底,且沒有必要的 WebPermission

assemblyFile 參數是空字串 ("")。

組件名稱超過系統定義的長度上限。

備註

參數 assemblyFile 必須參考不含逸出字元的 URI。 這個方法會提供 URI 中所有無效字元的逸出字元。

注意

不支援檔案傳輸通訊協定 (FTP) 。 如果 提供的 assemblyFile URI 是 FTP 位址,則不會載入元件。 不會擲回任何例外狀況。

assemblyFile 可以是絕對目錄或相對於目前目錄。

元件可以載入三個內容的其中一個,或者可以在沒有內容的情況下載入:

  • 載入內容包含探查所找到的元件:在 GAC 中、裝載運行時間或應用程式域的 和 PrivateBinPath 中,則位於ApplicationBase主機組件存放區中。 Load 方法的大部分多載都會將組件載入此內容中。

  • 載入來源內容包含使用者提供路徑未包含在探查所搜尋目錄的元件。 LoadFromCreateInstanceFromExecuteAssembly 是依路徑載入之方法的範例。

    如需從遠端位置載入元件,請參閱 <loadFromRemoteSources>

  • 僅限反映的內容包含使用 ReflectionOnlyLoadReflectionOnlyLoadFrom 方法載入的元件;無法執行這些內容中的程序代碼。

  • 如果用戶產生或找到元件,則它不在任何內容中。 這適用於使用 方法多載載入的 Load 元件,這個方法會指定包含元件的位元組數位列,以及使用反映發出而未儲存至磁碟的暫時性動態元件。

從內容載入可讓元件從探查中未包含的路徑載入,但仍允許找到並載入該路徑的相依性,因為路徑資訊是由內容維護。

方法 LoadFrom 有下列缺點。 請考慮改用 Load

是否將某些使用權限授予組件則以辨識項 (Evidence) 為基礎。 元件和安全性辨識項合併的規則如下:

  • 當您使用 LoadFrom 不含 Evidence 參數的方法時,元件會以載入器所提供的辨識項載入。

  • 當您搭配Evidence參數使用LoadFrom方法時,會合併辨識項片段。 當做自變數 LoadFrom 提供給方法的辨識項片段取代載入器所提供的辨識項片段。

  • 如果您在相同元件上多次呼叫這個方法,但指定不同的辨識項時,Common Language Runtime 不會擲回 FileLoadException ,因為無法判斷不同辨識項規格的相等性和完整性。 第一個成功的辨識項是所使用的辨識項。

  • 當您使用 LoadFrom 方法搭配 Byte[] 參數載入通用物件檔格式 (COFF) 影像時,辨識項會結合。 ZoneUrlSite 繼承自呼叫元件,而且HashStrongName取自 COFF 元件。

  • 當您搭配Byte[]參數使用 LoadFrom 方法並Evidence載入 COFF 影像時,只會使用提供的辨識項。 會忽略呼叫元件和 COFF 影像辨識項的辨識項。

適用於

LoadFrom(String, Byte[], AssemblyHashAlgorithm)

來源:
Assembly.cs
來源:
Assembly.cs
來源:
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

雜湊演算法,用於雜湊檔案和用來產生強式名稱 (Strong Name)。

傳回

載入的組件。

例外狀況

僅限 .NET Core 與 .NET 5+:在所有情況下。

assemblyFilenull

找不到 assemblyFile,或您想載入的模組並未指定檔案的副檔名。

無法載入找到的檔案。

-或-

assemblyFile 會指定根據 <loadFromRemoteSources> 停用的位置。

assemblyFile 不是目前載入運行時間的有效元件;例如,64 位進程中的32位元件。

指定了並非以 "file://" 開頭的程式碼基底,且沒有必要的 WebPermission

assemblyFile 參數是空字串 ("")。

組件名稱超過系統定義的長度上限。

備註

在 .NET Core 和 .NET 5+中,此方法會在 NotSupportedException 呼叫時擲回。 請改用 LoadFrom(String)

參數 assemblyFile 必須參考不含逸出字元的 URI。 這個方法會提供 URI 中所有無效字元的逸出字元。

注意

不支援檔案傳輸通訊協定 (FTP) 。 如果 提供的 assemblyFile URI 是 FTP 位址,則不會載入元件。 不會擲回任何例外狀況。

assemblyFile 可以是絕對目錄或相對於目前目錄。

元件可以載入三個內容的其中一個,或者可以在沒有內容的情況下載入:

  • 載入內容包含探查所找到的元件:在全域程式集緩存、裝載運行時間或應用程式域的和 PrivateBinPath 中,則位於ApplicationBase主機組件存放區中。 Load 方法的大部分多載都會將組件載入此內容中。

  • 從內容載入包含使用者提供未包含在探查中的路徑的元件。 LoadFromCreateInstanceFromExecuteAssembly 是依路徑載入之方法的範例。

    如需從遠端位置載入元件,請參閱 <loadFromRemoteSources>

  • 僅限反映的內容包含使用 ReflectionOnlyLoadReflectionOnlyLoadFrom 方法載入的元件;無法執行這些內容中的程序代碼。

  • 如果用戶產生或找到元件,則它不在任何內容中。 這適用於使用 方法多載載入的 Load 元件,這個方法會指定包含元件的位元組數位列,以及使用反映發出而未儲存至磁碟的暫時性動態元件。

從內容載入可讓元件從探查中未包含的路徑載入,但允許找到並載入該路徑的相依性,因為內容會維護路徑資訊。

方法 LoadFrom 有下列缺點。 請考慮改用 Load

  • 如果已載入具有相同身分識別的組件,LoadFrom 會傳回載入的組件,即使指定不同的路徑也是一樣。

  • 如果使用 LoadFrom 載入組件,之後載入內容中的組件卻試圖根據顯示名稱載入相同組件,則載入嘗試會失敗。 還原序列化組件時,也可能發生這種情況。

  • 如果使用 載入 LoadFrom元件,而且探查路徑包含具有相同身分識別但不同位置 InvalidCastException、、 MissingMethodException或其他非預期行為的元件。

  • LoadFrom 要求所指定路徑上的 FileIOPermissionAccess.ReadFileIOPermissionAccess.PathDiscoveryWebPermission

  • 如果 的 assemblyFile原生映射存在,則不會使用它。 組件無法以定義域中性方式載入。

元件會以載入器所提供的辨識項載入。

適用於

LoadFrom(String)

來源:
Assembly.cs
來源:
Assembly.cs
來源:
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

檔案的名稱或路徑,包含組件的資訊清單。

傳回

載入的組件。

例外狀況

assemblyFilenull

找不到assemblyFile ,或您想載入的模組並未指定檔案的副檔名。

無法載入找到的檔案。

-或-

僅限 .NET Framework: assemblyFile 指定根據 <loadFromRemoteSources> 停用的位置。

assemblyFile 不是目前載入運行時間的有效元件;例如,64 位進程中的32位元件。

指定了並非以 "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) 。 如果 提供的 assemblyFile URI 是 FTP 位址,則不會載入元件。 不會擲回任何例外狀況。

assemblyFile 可能是絕對或相對於目前目錄。

僅限 .NET Framework: 元件可以載入三個內容的其中一個,或者可以在沒有內容的情況下載入:

  • 載入內容包含探查所找到的元件:在 GAC 中、裝載運行時間或應用程式域的 和 PrivateBinPath 中,則位於ApplicationBase主機組件存放區中。 Load 方法的大部分多載都會將組件載入此內容中。

  • 載入來源內容包含使用者提供路徑未包含在探查所搜尋目錄的元件。 它也允許在該路徑上找到和載入的相依性,因為路徑資訊是由內容維護。 LoadFromCreateInstanceFromExecuteAssembly 是依路徑載入之方法的範例。

    如需從遠端位置載入元件,請參閱 <loadFromRemoteSources>

  • 僅限反映的內容包含使用 ReflectionOnlyLoadReflectionOnlyLoadFrom 方法載入的元件;無法執行這些內容中的程序代碼。

  • 如果用戶產生或找到元件,則它不在任何內容中。 這適用於使用 方法多載載入的 Load 元件,這個方法會指定包含元件的位元組數位列,以及使用反映發出而未儲存至磁碟的暫時性動態元件。

方法 LoadFrom 有下列缺點。 請考慮改用 Load

  • 如果已在載入來源中載入具有相同身分識別的組件,LoadFrom 會傳回載入的組件,即使已指定不同的路徑亦然。

  • 即使具有相同身分識別的元件存在於載入內容中,仍可在載入內容中載入元件。 這兩個元件之間的互操作性將無法運作,導致錯誤,例如 InvalidCastExceptionMissingMethodException或其他非預期的行為。

  • 使用探查路徑中的位置呼叫 LoadFrom ,將會在載入內容中載入元件,而不是載入來源內容中。

  • 如果系結重新導向原則會傳遞其身分識別的元件檔案傳遞至 LoadFrom,則會套用原則,並且會從載入內容中的探查路徑載入元件。

  • 如果在載入內容中載入元件,而載入內容中的元件稍後會嘗試依顯示名稱載入相同的元件,則載入嘗試會失敗。 還原序列化組件時,也可能發生這種情況。

  • LoadFrom 要求所指定路徑上的 FileIOPermissionAccess.ReadFileIOPermissionAccess.PathDiscoveryWebPermission

  • 如果 的 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

用於載入組件的辨識項。

傳回

載入的組件。

屬性

例外狀況

assemblyFilenull

找不到assemblyFile ,或您想載入的模組並未指定檔案的副檔名。

無法載入找到的檔案。

-或-

securityEvidence 並非模稜兩可,而且已判定為無效。

-或-

assemblyFile 會指定根據 <loadFromRemoteSources> 停用的位置。

assemblyFile 不是目前載入運行時間的有效元件;例如,64 位進程中的32位元件。

指定了並非以 "file://" 開頭的程式碼基底,且沒有必要的 WebPermission

assemblyFile 參數是空字串 ("")。

組件名稱超過系統定義的長度上限。

備註

參數 assemblyFile 必須參考不含逸出字元的 URI。 這個方法會提供 URI 中所有無效字元的逸出字元。

注意

不支援檔案傳輸通訊協定 (FTP) 。 如果 提供的 assemblyFile URI 是 FTP 位址,則不會載入元件。 不會擲回任何例外狀況。

assemblyFile 可以是絕對目錄或相對於目前目錄。

元件可以載入三個內容的其中一個,或者可以在沒有內容的情況下載入:

  • 載入內容包含探查所找到的元件:在 GAC 中、裝載運行時間或應用程式域的 和 PrivateBinPath 中,則位於ApplicationBase主機組件存放區中。 Load 方法的大部分多載都會將組件載入此內容中。

  • 載入來源內容包含使用者提供路徑未包含在探查所搜尋目錄的元件。 LoadFromCreateInstanceFromExecuteAssembly 是依路徑載入之方法的範例。

    如需從遠端位置載入元件,請參閱 <loadFromRemoteSources>

  • 僅限反映的內容包含使用 ReflectionOnlyLoadReflectionOnlyLoadFrom 方法載入的元件;無法執行這些內容中的程序代碼。

  • 如果用戶產生或找到元件,則它不在任何內容中。 這適用於使用 方法多載載入的 Load 元件,這個方法會指定包含元件的位元組數位列,以及使用反映發出而未儲存至磁碟的暫時性動態元件。

從內容載入可讓元件從探查中未包含的路徑載入,但仍允許找到並載入該路徑的相依性,因為路徑資訊是由內容維護。

方法 LoadFrom 有下列缺點。 請考慮改用 Load

是否將某些使用權限授予組件則以辨識項 (Evidence) 為基礎。 元件和安全性辨識項合併的規則如下:

  • 當您使用 LoadFrom 不含 Evidence 參數的方法時,元件會以載入器所提供的辨識項載入。

  • 當您搭配Evidence參數使用LoadFrom方法時,會合併辨識項片段。 當做自變數 LoadFrom 提供給方法的辨識項片段取代載入器所提供的辨識項片段。

  • 如果您在相同元件上多次呼叫這個方法,但指定不同的辨識項時,Common Language Runtime 不會擲回 FileLoadException ,因為無法判斷不同辨識項規格的相等性和完整性。 第一個成功的辨識項是所使用的辨識項。

  • 當您使用 LoadFrom 方法搭配 Byte[] 參數來載入通用物件檔格式 (COFF) 影像時,會結合辨識項。 ZoneUrlSite 繼承自呼叫元件,而且HashStrongName取自 COFF 元件。

  • 當您搭配參數使用 LoadFrom 方法 Byte[]Evidence 載入 COFF 影像時,只會使用提供的辨識項。 系統會忽略呼叫元件和 COFF 映像辨識項的辨識項。

另請參閱

適用於