Assembly.LoadFrom 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
載入組件。
多載
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)。
傳回
載入的組件。
- 屬性
例外狀況
assemblyFile
為 null
。
找不到assemblyFile
,或您想載入的模組並未指定檔案的副檔名。
無法載入找到的檔案。
-或-
securityEvidence
並非模稜兩可,而且已判定為無效。
-或-
assemblyFile
會指定根據 <loadFromRemoteSources> 停用的位置。
assemblyFile
不是目前載入運行時間的有效元件;例如,64 位進程中的32位元件。
指定了並非以 "file://" 開頭的程式碼基底,且沒有必要的 WebPermission。
assemblyFile
參數是空字串 ("")。
組件名稱超過系統定義的長度上限。
備註
參數 assemblyFile
必須參考不含逸出字元的 URI。 這個方法會提供 URI 中所有無效字元的逸出字元。
注意
不支援檔案傳輸通訊協定 (FTP) 。 如果 提供的 assemblyFile
URI 是 FTP 位址,則不會載入元件。 不會擲回任何例外狀況。
assemblyFile
可以是絕對目錄或相對於目前目錄。
元件可以載入三個內容的其中一個,或者可以在沒有內容的情況下載入:
載入內容包含探查所找到的元件:在 GAC 中、裝載運行時間或應用程式域的 和 PrivateBinPath 中,則位於ApplicationBase主機組件存放區中。 Load 方法的大部分多載都會將組件載入此內容中。
載入來源內容包含使用者提供路徑未包含在探查所搜尋目錄的元件。 LoadFrom、CreateInstanceFrom 和 ExecuteAssembly 是依路徑載入之方法的範例。
如需從遠端位置載入元件,請參閱
<loadFromRemoteSources>
。僅限反映的內容包含使用 ReflectionOnlyLoad 和 ReflectionOnlyLoadFrom 方法載入的元件;無法執行這些內容中的程序代碼。
如果用戶產生或找到元件,則它不在任何內容中。 這適用於使用 方法多載載入的 Load 元件,這個方法會指定包含元件的位元組數位列,以及使用反映發出而未儲存至磁碟的暫時性動態元件。
從內容載入可讓元件從探查中未包含的路徑載入,但仍允許找到並載入該路徑的相依性,因為路徑資訊是由內容維護。
方法 LoadFrom 有下列缺點。 請考慮改用 Load。
如果已載入具有相同身分識別的組件,LoadFrom 會傳回載入的組件,即使指定不同的路徑也是一樣。
如果使用 LoadFrom 載入組件,之後載入內容中的組件卻試圖根據顯示名稱載入相同組件,則載入嘗試會失敗。 還原序列化組件時,也可能發生這種情況。
如果使用 載入 LoadFrom元件,而且探查路徑包含具有相同身分識別但不同位置 InvalidCastException、、 MissingMethodException或其他非預期行為的元件。
LoadFrom 要求所指定路徑上的 FileIOPermissionAccess.Read 和 FileIOPermissionAccess.PathDiscovery 或 WebPermission。
如果 的
assemblyFile
原生映射存在,則不會使用它。 元件無法載入為網域中性。
是否將某些使用權限授予組件則以辨識項 (Evidence) 為基礎。 元件和安全性辨識項合併的規則如下:
當您搭配Evidence參數使用LoadFrom方法時,會合併辨識項片段。 當做自變數 LoadFrom 提供給方法的辨識項片段取代載入器所提供的辨識項片段。
如果您在相同元件上多次呼叫這個方法,但指定不同的辨識項時,Common Language Runtime 不會擲回 FileLoadException ,因為無法判斷不同辨識項規格的相等性和完整性。 第一個成功的辨識項是所使用的辨識項。
當您使用 LoadFrom 方法搭配
Byte[]
參數載入通用物件檔格式 (COFF) 影像時,辨識項會結合。Zone
、Url
和Site
繼承自呼叫元件,而且Hash
StrongName
取自 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+:在所有情況下。
assemblyFile
為 null
。
找不到 assemblyFile
,或您想載入的模組並未指定檔案的副檔名。
assemblyFile
不是目前載入運行時間的有效元件;例如,64 位進程中的32位元件。
指定了並非以 "file://" 開頭的程式碼基底,且沒有必要的 WebPermission。
assemblyFile
參數是空字串 ("")。
組件名稱超過系統定義的長度上限。
備註
在 .NET Core 和 .NET 5+中,此方法會在 NotSupportedException 呼叫時擲回。 請改用 LoadFrom(String)。
參數 assemblyFile
必須參考不含逸出字元的 URI。 這個方法會提供 URI 中所有無效字元的逸出字元。
注意
不支援檔案傳輸通訊協定 (FTP) 。 如果 提供的 assemblyFile
URI 是 FTP 位址,則不會載入元件。 不會擲回任何例外狀況。
assemblyFile
可以是絕對目錄或相對於目前目錄。
元件可以載入三個內容的其中一個,或者可以在沒有內容的情況下載入:
載入內容包含探查所找到的元件:在全域程式集緩存、裝載運行時間或應用程式域的和 PrivateBinPath 中,則位於ApplicationBase主機組件存放區中。 Load 方法的大部分多載都會將組件載入此內容中。
從內容載入包含使用者提供未包含在探查中的路徑的元件。 LoadFrom、CreateInstanceFrom 和 ExecuteAssembly 是依路徑載入之方法的範例。
如需從遠端位置載入元件,請參閱
<loadFromRemoteSources>
。僅限反映的內容包含使用 ReflectionOnlyLoad 和 ReflectionOnlyLoadFrom 方法載入的元件;無法執行這些內容中的程序代碼。
如果用戶產生或找到元件,則它不在任何內容中。 這適用於使用 方法多載載入的 Load 元件,這個方法會指定包含元件的位元組數位列,以及使用反映發出而未儲存至磁碟的暫時性動態元件。
從內容載入可讓元件從探查中未包含的路徑載入,但允許找到並載入該路徑的相依性,因為內容會維護路徑資訊。
方法 LoadFrom 有下列缺點。 請考慮改用 Load。
如果已載入具有相同身分識別的組件,LoadFrom 會傳回載入的組件,即使指定不同的路徑也是一樣。
如果使用 LoadFrom 載入組件,之後載入內容中的組件卻試圖根據顯示名稱載入相同組件,則載入嘗試會失敗。 還原序列化組件時,也可能發生這種情況。
如果使用 載入 LoadFrom元件,而且探查路徑包含具有相同身分識別但不同位置 InvalidCastException、、 MissingMethodException或其他非預期行為的元件。
LoadFrom 要求所指定路徑上的 FileIOPermissionAccess.Read 和 FileIOPermissionAccess.PathDiscovery 或 WebPermission。
如果 的
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
檔案的名稱或路徑,包含組件的資訊清單。
傳回
載入的組件。
例外狀況
assemblyFile
為 null
。
找不到assemblyFile
,或您想載入的模組並未指定檔案的副檔名。
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 方法的大部分多載都會將組件載入此內容中。
載入來源內容包含使用者提供路徑未包含在探查所搜尋目錄的元件。 它也允許在該路徑上找到和載入的相依性,因為路徑資訊是由內容維護。 LoadFrom、CreateInstanceFrom 和 ExecuteAssembly 是依路徑載入之方法的範例。
如需從遠端位置載入元件,請參閱
<loadFromRemoteSources>
。僅限反映的內容包含使用 ReflectionOnlyLoad 和 ReflectionOnlyLoadFrom 方法載入的元件;無法執行這些內容中的程序代碼。
如果用戶產生或找到元件,則它不在任何內容中。 這適用於使用 方法多載載入的 Load 元件,這個方法會指定包含元件的位元組數位列,以及使用反映發出而未儲存至磁碟的暫時性動態元件。
方法 LoadFrom 有下列缺點。 請考慮改用 Load。
如果已在載入來源中載入具有相同身分識別的組件,LoadFrom 會傳回載入的組件,即使已指定不同的路徑亦然。
即使具有相同身分識別的元件存在於載入內容中,仍可在載入內容中載入元件。 這兩個元件之間的互操作性將無法運作,導致錯誤,例如 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
不是目前載入運行時間的有效元件;例如,64 位進程中的32位元件。
指定了並非以 "file://" 開頭的程式碼基底,且沒有必要的 WebPermission。
assemblyFile
參數是空字串 ("")。
組件名稱超過系統定義的長度上限。
備註
參數 assemblyFile
必須參考不含逸出字元的 URI。 這個方法會提供 URI 中所有無效字元的逸出字元。
注意
不支援檔案傳輸通訊協定 (FTP) 。 如果 提供的 assemblyFile
URI 是 FTP 位址,則不會載入元件。 不會擲回任何例外狀況。
assemblyFile
可以是絕對目錄或相對於目前目錄。
元件可以載入三個內容的其中一個,或者可以在沒有內容的情況下載入:
載入內容包含探查所找到的元件:在 GAC 中、裝載運行時間或應用程式域的 和 PrivateBinPath 中,則位於ApplicationBase主機組件存放區中。 Load 方法的大部分多載都會將組件載入此內容中。
載入來源內容包含使用者提供路徑未包含在探查所搜尋目錄的元件。 LoadFrom、CreateInstanceFrom 和 ExecuteAssembly 是依路徑載入之方法的範例。
如需從遠端位置載入元件,請參閱
<loadFromRemoteSources>
。僅限反映的內容包含使用 ReflectionOnlyLoad 和 ReflectionOnlyLoadFrom 方法載入的元件;無法執行這些內容中的程序代碼。
如果用戶產生或找到元件,則它不在任何內容中。 這適用於使用 方法多載載入的 Load 元件,這個方法會指定包含元件的位元組數位列,以及使用反映發出而未儲存至磁碟的暫時性動態元件。
從內容載入可讓元件從探查中未包含的路徑載入,但仍允許找到並載入該路徑的相依性,因為路徑資訊是由內容維護。
方法 LoadFrom 有下列缺點。 請考慮改用 Load。
如果已載入具有相同身分識別的組件,LoadFrom 會傳回載入的組件,即使指定不同的路徑也是一樣。
如果使用 LoadFrom 載入組件,之後載入內容中的組件卻試圖根據顯示名稱載入相同組件,則載入嘗試會失敗。 還原序列化組件時,也可能發生這種情況。
如果使用 載入 LoadFrom元件,而且探查路徑包含具有相同身分識別但不同位置 InvalidCastException、、 MissingMethodException或其他非預期行為的元件。
LoadFrom 要求所指定路徑上的 FileIOPermissionAccess.Read 和 FileIOPermissionAccess.PathDiscovery 或 WebPermission。
如果 的
assemblyFile
原生映射存在,則不會使用它。 元件無法載入為網域中性。
是否將某些使用權限授予組件則以辨識項 (Evidence) 為基礎。 元件和安全性辨識項合併的規則如下:
當您搭配Evidence參數使用LoadFrom方法時,會合併辨識項片段。 當做自變數 LoadFrom 提供給方法的辨識項片段取代載入器所提供的辨識項片段。
如果您在相同元件上多次呼叫這個方法,但指定不同的辨識項時,Common Language Runtime 不會擲回 FileLoadException ,因為無法判斷不同辨識項規格的相等性和完整性。 第一個成功的辨識項是所使用的辨識項。
當您使用 LoadFrom 方法搭配
Byte[]
參數來載入通用物件檔格式 (COFF) 影像時,會結合辨識項。Zone
、Url
和Site
繼承自呼叫元件,而且Hash
StrongName
取自 COFF 元件。當您搭配參數使用 LoadFrom 方法
Byte[]
並 Evidence 載入 COFF 影像時,只會使用提供的辨識項。 系統會忽略呼叫元件和 COFF 映像辨識項的辨識項。