共用方式為


Assembly.LoadFrom 方法

定義

裝載一個組件。

多載

名稱 Description
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+:適用於所有情況。

assemblyFilenull

assemblyFile 找不到,或你嘗試載入的模組沒有指定副檔名。

找到的檔案無法載入。

-或-

assemblyFile 指定一個根據 <loadFromRemoteSources> 被停用的位置。

assemblyFile 不是目前載入執行時的有效組合語言;例如,一個 32 位元的組合語言,出現在 64 位元的程序中。

若程式碼庫不以「file://」開頭,則未包含所需的 WebPermission

參數 assemblyFile 為空字串(“”)。

組件名稱超過系統定義的最大長度。

備註

此 API 在 .NET Core/.NET 5+ 中不被支援。 此方法在被呼叫時會拋 NotSupportedException 出。 請改用 LoadFrom(String)

參數 assemblyFile 必須指向不含跳脫字元的 URI。 此方法為 URI 中所有無效字元提供逃逸字元。

備註

不支援檔案傳輸協定(FTP)。 若提供的 URI assemblyFile 是 FTP 位址,則該組合檔未被載入。 沒例外拋出。

assemblyFile 可以是絕對的,也可以相對於目前目錄。

組件可以載入三種上下文之一,或是無上下文載入:

  • 載入上下文包含透過探測找到的組件:在全域組件快取中、若執行時有主機組件存儲,或在 ApplicationBase 應用域的 and PrivateBinPath 中。 大多數 Load 方法的多載會將元件載入至此上下文。

  • 載入出境境包含使用者提供未包含在探測中的路徑的組件。 LoadFromCreateInstanceFromExecuteAssembly 是依路徑載入的方法範例。

    請參閱 <loadFromRemoteSources> 從遠端地區裝載組件的資訊。

  • 僅反映上下文包含載入 ReflectionOnlyLoad and ReflectionOnlyLoadFrom 方法的組合語言;這些上下文中的程式碼無法執行。

  • 如果使用者產生或找到該組合語言,該組合語言不在任何上下文中。 此規定適用於使用方法超載 Load 載入指定包含組件的位元組陣列的組件,以及以反射發射產生且未儲存到磁碟的瞬態動態組件。

載入出點上下文允許從未包含在探測中的路徑載入組件,但由於路徑資訊由上下文維護,故能找到並載入該路徑的依賴關係。

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

裝載器會裝載裝載員提供的證據。

適用於

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

用於雜湊檔案及產生強名稱的雜湊演算法。

傳回

裝填組件。

屬性

例外狀況

assemblyFilenull

assemblyFile 找不到,或你嘗試載入的模組未指定副檔名。

找到的檔案無法載入。

-或-

securityEvidence 不含糊,判定為無效。

-或-

assemblyFile 指定一個根據 <loadFromRemoteSources> 被停用的位置。

assemblyFile 不是目前載入執行時的有效組合語言;例如,一個 32 位元的組合語言,出現在 64 位元的程序中。

若程式碼庫不以「file://」開頭,則未包含所需的 WebPermission

參數 assemblyFile 為空字串(“”)。

組件名稱超過系統定義的最大長度。

備註

參數 assemblyFile 必須指向不含跳脫字元的 URI。 此方法為 URI 中所有無效字元提供逃逸字元。

備註

不支援檔案傳輸協定(FTP)。 若提供的 URI assemblyFile 是 FTP 位址,則該組合檔未被載入。 沒例外拋出。

assemblyFile 可以是絕對的,也可以相對於目前目錄。

組件可以載入三種上下文之一,或是無上下文載入:

  • 載入上下文包含透過探測找到的組件:在 GAC、若執行時有主機組件存儲,或在應用域的 and ApplicationBasePrivateBinPath 中。 大多數 Load 方法的多載會將元件載入至此上下文。

  • 載入來源上下文包含使用者提供未包含於探測目錄中路徑的組件。 LoadFromCreateInstanceFromExecuteAssembly 是依路徑載入的方法範例。

    請參閱 <loadFromRemoteSources> 從遠端地區裝載組件的資訊。

  • 僅反映上下文包含載入 ReflectionOnlyLoad and ReflectionOnlyLoadFrom 方法的組合語言;這些上下文中的程式碼無法執行。

  • 如果使用者產生或找到該組合語言,該組合語言不在任何上下文中。 此規定適用於使用方法超載 Load 載入指定包含組件的位元組陣列的組件,以及以反射發射產生且未儲存到磁碟的瞬態動態組件。

載入出境(load-from)允許從未包含在探測中的路徑載入組件,但同時允許找到並載入該路徑的依賴關係,因為路徑資訊由上下文維護。

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

是否授予或不授予某程序集特定許可權是基於證據的。 組裝與安全證據合併的規則如下:

  • 當你使用 LoadFromEvidence 參數的方法時,裝配體會被載入載入器所提供的證據。

  • 當你使用 LoadFrom 帶有 Evidence 參數的方法時,證據片段會被合併。 作為方法 LoadFrom 論據所提供的證據,會取代裝載員提供的證據。

  • 如果你在同一組語言上多次呼叫此方法,但指定不同的證據,則通用語言執行時間不會拋出 a FileLoadException ,因為無法確定不同證據規格的相等性與完整性。 最先成功的證據就是所使用的證據。

  • 當你使用 LoadFrom 帶有 Byte[] 參數的方法載入通用物件檔案格式(COFF)影像時,證據會被合併。 Zone, 和 UrlSite 分別繼承自呼叫組件,和 HashStrongName 則取自 COFF 組件。

  • 當你使用 LoadFrom 帶有 Byte[] 參數的方法並 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

包含組裝清單的檔案名稱或路徑。

傳回

裝填組件。

屬性

例外狀況

assemblyFilenull

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 overloads。

組裝檔會載入預設的 AssemblyLoadContext。 欲了解更多組裝裝載資訊,請參閱 管理組裝裝載演算法

參數 assemblyFile 必須指向不含跳脫字元的 URI。 此方法為 URI 中所有無效字元提供逃逸字元。

備註

僅限 .NET Framework:不支援檔案傳輸協定(FTP)。 若提供的 URI assemblyFile 是 FTP 位址,則該組合檔未被載入。 沒例外拋出。

assemblyFile 可能是絕對的,也可以相對於目前目錄。

僅限 .NET Framework: 組件可以載入三種上下文之一,或是無上下文載入:

  • 載入上下文包含透過探測找到的組件:在 GAC、若執行時有主機組件存儲,或在應用域的 and ApplicationBasePrivateBinPath 中。 大多數 Load 方法的多載會將元件載入至此上下文。

  • 載入來源上下文包含使用者提供未包含於探測目錄中路徑的組件。 它也允許找到並載入該路徑的依賴關係,因為路徑資訊是由上下文維護的。 LoadFromCreateInstanceFromExecuteAssembly 是依路徑載入的方法範例。

    請參閱 <loadFromRemoteSources> 從遠端地區裝載組件的資訊。

  • 僅反映上下文包含載入 ReflectionOnlyLoad and ReflectionOnlyLoadFrom 方法的組合語言;這些上下文中的程式碼無法執行。

  • 如果使用者產生或找到該組合語言,該組合語言不在任何上下文中。 此規定適用於使用方法超載 Load 載入指定包含組件的位元組陣列的組件,以及以反射發射產生且未儲存到磁碟的瞬態動態組件。

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

  • 如果已從內容載入具有相同身分識別的元件,即使指定了不同的路徑, LoadFrom 仍會傳回載入的元件。

  • 即使裝配元件在載入上下文中存在具有相同身份的組裝件,也可能在載入點(load-from)語境中被載入。 兩個組件間的互通性將無法運作,導致錯誤如 InvalidCastExceptionMissingMethodException或其他意外行為。

  • 用探測路徑中的位置呼叫 LoadFrom ,組裝會在載入上下文中載入,而非載入-出境上下文。

  • 如果一個由綁定重定向策略所規範的組合檔被傳遞到 LoadFrom,該策略會被套用,組裝檔也會從載入上下文中的探測路徑載入。

  • 若裝配是在載入點(load-from)情境中載入,之後裝配體嘗試以顯示名稱載入同一裝配體,則載入嘗試失敗。 反序列化組件時,可能會發生這種情況。

  • 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

裝填組件的證據。

傳回

裝填組件。

屬性

例外狀況

assemblyFilenull

assemblyFile 找不到,或你嘗試載入的模組未指定副檔名。

找到的檔案無法載入。

-或-

securityEvidence 不含糊,判定為無效。

-或-

assemblyFile 指定一個根據 <loadFromRemoteSources> 被停用的位置。

assemblyFile 不是目前載入執行時的有效組合語言;例如,一個 32 位元的組合語言,出現在 64 位元的程序中。

若程式碼庫不以「file://」開頭,則未包含所需的 WebPermission

參數 assemblyFile 為空字串(“”)。

組件名稱超過系統定義的最大長度。

備註

參數 assemblyFile 必須指向不含跳脫字元的 URI。 此方法為 URI 中所有無效字元提供逃逸字元。

備註

不支援檔案傳輸協定(FTP)。 若提供的 URI assemblyFile 是 FTP 位址,則該組合檔未被載入。 沒例外拋出。

assemblyFile 可以是絕對的,也可以相對於目前目錄。

組件可以載入三種上下文之一,或是無上下文載入:

  • 載入上下文包含透過探測找到的組件:在 GAC、若執行時有主機組件存儲,或在應用域的 and ApplicationBasePrivateBinPath 中。 大多數 Load 方法的多載會將元件載入至此上下文。

  • 載入來源上下文包含使用者提供未包含於探測目錄中路徑的組件。 LoadFromCreateInstanceFromExecuteAssembly 是依路徑載入的方法範例。

    請參閱 <loadFromRemoteSources> 從遠端地區裝載組件的資訊。

  • 僅反映上下文包含載入 ReflectionOnlyLoad and ReflectionOnlyLoadFrom 方法的組合語言;這些上下文中的程式碼無法執行。

  • 如果使用者產生或找到該組合語言,該組合語言不在任何上下文中。 此規定適用於使用方法超載 Load 載入指定包含組件的位元組陣列的組件,以及以反射發射產生且未儲存到磁碟的瞬態動態組件。

載入出境(load-from)允許從未包含在探測中的路徑載入組件,但同時允許找到並載入該路徑的依賴關係,因為路徑資訊由上下文維護。

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

是否授予或不授予某程序集特定許可權是基於證據的。 組裝與安全證據合併的規則如下:

  • 當你使用 LoadFromEvidence 參數的方法時,裝配體會被載入載入器所提供的證據。

  • 當你使用 LoadFrom 帶有 Evidence 參數的方法時,證據片段會被合併。 作為方法 LoadFrom 論據所提供的證據,會取代裝載員提供的證據。

  • 如果你在同一組語言上多次呼叫此方法,但指定不同的證據,則通用語言執行時間不會拋出 a FileLoadException ,因為無法確定不同證據規格的相等性與完整性。 最先成功的證據就是所使用的證據。

  • 當你使用 LoadFrom 帶有 Byte[] 參數的方法載入通用物件檔案格式(COFF)影像時,證據會被合併。 Zone, 和 UrlSite 分別繼承自呼叫組件,和 HashStrongName 則取自 COFF 組件。

  • 當你使用 LoadFrom 帶有 Byte[] 參數的方法並 Evidence 載入 COFF 影像時,僅使用提供的證據。 召喚集會的證據和 COFF 影像的證據被忽略了。

另請參閱

適用於