Assembly.Load Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Ładuje zestaw.
Przeciążenia
| Load(Byte[], Byte[], SecurityContextSource) |
Ładuje zestaw z obrazem opartym na formacie wspólnego pliku obiektów (COFF) zawierającym emitowany zestaw, opcjonalnie włączając symbole i określając źródło kontekstu zabezpieczeń. Zestaw jest ładowany do domeny aplikacji obiektu wywołującego. |
| Load(Byte[], Byte[], Evidence) |
Nieaktualne.
Nieaktualne.
Ładuje zestaw ze wspólnym obrazem opartym na formacie pliku obiektów (COFF) zawierającym emitowany zestaw, opcjonalnie w tym symbole i dowody dla zestawu. Zestaw jest ładowany do domeny aplikacji obiektu wywołującego. |
| Load(String, Evidence) |
Nieaktualne.
Nieaktualne.
Ładuje zestaw pod nazwą wyświetlaną, ładujący zestaw do domeny obiektu wywołującego przy użyciu dostarczonych dowodów. |
| Load(AssemblyName, Evidence) |
Nieaktualne.
Nieaktualne.
Ładuje zestaw przy użyciu elementu AssemblyName. Zestaw jest ładowany do domeny obiektu wywołującego przy użyciu dostarczonych dowodów. |
| Load(Byte[]) |
Ładuje zestaw ze wspólnym obrazem opartym na pliku obiektu (COFF) zawierającym emitowany zestaw. Zestaw jest ładowany do domeny aplikacji obiektu wywołującego. |
| Load(String) |
Ładuje zestaw o określonej nazwie. |
| Load(AssemblyName) |
Ładuje zestaw przy użyciu elementu AssemblyName. |
| Load(Byte[], Byte[]) |
Ładuje zestaw przy użyciu wspólnego obrazu opartego na pliku obiektu (COFF) zawierającego emitowany zestaw, opcjonalnie w tym symbole zestawu. Zestaw jest ładowany do domeny aplikacji obiektu wywołującego. |
Load(Byte[], Byte[], SecurityContextSource)
Ładuje zestaw z obrazem opartym na formacie wspólnego pliku obiektów (COFF) zawierającym emitowany zestaw, opcjonalnie włączając symbole i określając źródło kontekstu zabezpieczeń. Zestaw jest ładowany do domeny aplikacji obiektu wywołującego.
public:
static System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly, cli::array <System::Byte> ^ rawSymbolStore, System::Security::SecurityContextSource securityContextSource);
public static System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore, System.Security.SecurityContextSource securityContextSource);
static member Load : byte[] * byte[] * System.Security.SecurityContextSource -> System.Reflection.Assembly
Public Shared Function Load (rawAssembly As Byte(), rawSymbolStore As Byte(), securityContextSource As SecurityContextSource) As Assembly
Parametry
- rawAssembly
- Byte[]
Tablica bajtów, która jest obrazem w formacie COFF, zawierającym emitowany zestaw.
- rawSymbolStore
- Byte[]
Tablica bajtów zawierająca nieprzetworzone bajty reprezentujące symbole zestawu.
- securityContextSource
- SecurityContextSource
Źródło kontekstu zabezpieczeń.
Zwraca
Załadowany zestaw.
Wyjątki
rawAssembly to null.
rawAssembly nie jest prawidłowym zestawem.
-lub-
rawAssembly został skompilowany przy użyciu nowszej wersji środowiska uruchomieniowego języka wspólnego niż wersja, która jest obecnie załadowana.
Wartość nie securityContextSource jest jedną z wartości wyliczenia.
Uwagi
Zestaw jest ładowany do domeny aplikacji obiektu wywołującego przy użyciu określonego źródła dla kontekstu zabezpieczeń. Jeśli rawSymbolStore określono, nieprzetworzone bajty reprezentujące symbole zestawu również są ładowane.
Dotyczy
Load(Byte[], Byte[], Evidence)
Przestroga
This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.
Przestroga
Ten interfejs API jest już przestarzały.
Ładuje zestaw ze wspólnym obrazem opartym na formacie pliku obiektów (COFF) zawierającym emitowany zestaw, opcjonalnie w tym symbole i dowody dla zestawu. Zestaw jest ładowany do domeny aplikacji obiektu wywołującego.
public:
static System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly, cli::array <System::Byte> ^ rawSymbolStore, System::Security::Policy::Evidence ^ securityEvidence);
public static System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore, 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 Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public static System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence);
[System.Obsolete]
public static System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore, System.Security.Policy.Evidence securityEvidence);
static member Load : byte[] * byte[] * 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 Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
static member Load : byte[] * byte[] * System.Security.Policy.Evidence -> System.Reflection.Assembly
[<System.Obsolete>]
static member Load : byte[] * byte[] * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Shared Function Load (rawAssembly As Byte(), rawSymbolStore As Byte(), securityEvidence As Evidence) As Assembly
Parametry
- rawAssembly
- Byte[]
Tablica bajtów, która jest obrazem w formacie COFF, zawierającym emitowany zestaw.
- rawSymbolStore
- Byte[]
Tablica bajtów zawierająca nieprzetworzone bajty reprezentujące symbole zestawu.
- securityEvidence
- Evidence
Dowód ładowania zestawu.
Zwraca
Załadowany zestaw.
- Atrybuty
Wyjątki
rawAssembly to null.
rawAssembly nie jest prawidłowym zestawem.
-lub-
Wersja 2.0 lub nowsza środowiska uruchomieniowego języka wspólnego jest obecnie ładowana i rawAssembly została skompilowana przy użyciu nowszej wersji.
Zestaw lub moduł został załadowany dwukrotnie z dwoma różnymi dowodami.
securityEvidence nie nulljest . Domyślnie starsze zasady CAS nie są włączone w .NET Framework 4; jeśli nie jest włączona, securityEvidence musi mieć wartość null.
Uwagi
Zestaw jest ładowany do domeny obiektu wywołującego przy użyciu dostarczonych dowodów. Ładowane są również nieprzetworzone bajty reprezentujące symbole zestawu.
To, czy określone uprawnienia są przyznane do zestawu, czy nie, zależy od dowodów. Zasady scalania kompilowania asemblera i dowodów zabezpieczeń są następujące:
Jeśli używasz Load metody bez Evidence parametru, zestaw jest ładowany z dowodem, że moduł ładujący dostarcza.
Gdy używasz Load metody z parametrem Evidence , elementy dowodów są scalane. Dowody dostarczone jako argument metody Load zastępuje dowody dostarczone przez moduł ładujący.
W przypadku użycia Load przeciążenia metody z parametrem
Byte[]w celu załadowania obrazu COFF dowody są dziedziczone z zestawu wywołującego. Dotyczy to architektury .NET Framework w wersji 1.1 z dodatkiem Service Pack 1 (SP1) i późniejszych wersji.Uwaga
W .NET Framework w wersji 1.0 i w wersji 1.1 bez dodatku SP1 w przypadku użycia Load przeciążenia metody z parametrem
Byte[]w celu załadowania obrazu COFF dowody są łączone.Zone,UrliSitesą dziedziczone z zestawu wywołującego iHashStrongNamesą pobierane z zestawu COFF.W przypadku użycia Load metody z parametrem
Byte[]i Evidence załadowania obrazu COFF używany jest tylko dostarczony dowód. Dowody wywołującego zestawu i dowodów obrazu COFF są ignorowane.
Zastanawianie się nad plikami wykonywalnym języka C++ może spowodować zgłoszenie błędu BadImageFormatException. Jest to najprawdopodobniej spowodowane przez kompilator języka C++ usuwający adresy relokacji lub sekcję .reloc z pliku wykonywalnego. Aby zachować .reloc adres pliku wykonywalnego C++, określ /fixed:no , kiedy łączysz.
Jeśli metoda jest wywoływana Load więcej niż raz w tym samym zestawie, ale z określonymi innymi dowodami, środowisko uruchomieniowe języka wspólnego nie zgłasza FileLoadException wartości, ponieważ nie można określić równości i integralności różnych specyfikacji dowodów. Używanym dowodem jest dowód na to, że odniesie się sukces za pierwszym razem.
Należy pamiętać, że to przeciążenie metody zawsze tworzy nowy Assembly obiekt z własnym mapowaniem.
Dotyczy
Load(String, Evidence)
Przestroga
This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.
Przestroga
Ten interfejs API jest już przestarzały.
Ładuje zestaw pod nazwą wyświetlaną, ładujący zestaw do domeny obiektu wywołującego przy użyciu dostarczonych dowodów.
public:
static System::Reflection::Assembly ^ Load(System::String ^ assemblyString, System::Security::Policy::Evidence ^ assemblySecurity);
public static System.Reflection.Assembly Load (string assemblyString, System.Security.Policy.Evidence assemblySecurity);
[System.Obsolete("This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public static System.Reflection.Assembly Load (string assemblyString, System.Security.Policy.Evidence assemblySecurity);
[System.Obsolete]
public static System.Reflection.Assembly Load (string assemblyString, System.Security.Policy.Evidence assemblySecurity);
static member Load : 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 Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
static member Load : string * System.Security.Policy.Evidence -> System.Reflection.Assembly
[<System.Obsolete>]
static member Load : string * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Shared Function Load (assemblyString As String, assemblySecurity As Evidence) As Assembly
Parametry
- assemblyString
- String
Wyświetlana nazwa zestawu.
- assemblySecurity
- Evidence
Dowód ładowania zestawu.
Zwraca
Załadowany zestaw.
- Atrybuty
Wyjątki
assemblyString to null.
assemblyString nie można odnaleźć.
assemblyString nie jest prawidłowym zestawem.
-lub-
Wersja 2.0 lub nowsza środowiska uruchomieniowego języka wspólnego jest obecnie ładowana i assemblyString została skompilowana przy użyciu nowszej wersji.
Nie można załadować pliku, który został znaleziony.
-lub-
Zestaw lub moduł został załadowany dwukrotnie z dwoma różnymi dowodami.
Uwagi
FileLoadException jest zgłaszany, jeśli assemblyString określa pełną nazwę zestawu, a pierwszy zestaw zgodny z prostą nazwą ma inną wersję, kulturę lub token klucza publicznego. Moduł ładujący nie kontynuuje sondowania dla innych zestawów, które są zgodne z prostą nazwą.
To, czy określone uprawnienia są przyznane do zestawu, czy nie, zależy od dowodów. Zasady scalania kompilowania asemblera i dowodów zabezpieczeń są następujące:
Jeśli używasz Load metody bez Evidence parametru, zestaw jest ładowany z dowodami, że moduł ładujący dostarcza.
Gdy używasz Load metody z parametrem Evidence , elementy dowodów są scalane. Dowody dostarczone jako argument Load metody zastępuje dowody dostarczone przez moduł ładujący.
W przypadku Load użycia przeciążenia metody z parametrem
Byte[]w celu załadowania obrazu wspólnego formatu pliku obiektów (COFF), dowody są dziedziczone z zestawu wywołującego. Dotyczy to architektury .NET Framework w wersji 1.1 z dodatkiem Service Pack 1 (SP1) i późniejszych wersji.Uwaga
W .NET Framework w wersji 1.0 i w wersji 1.1 bez dodatku SP1, gdy używasz Load przeciążenia metody z parametrem
Byte[]w celu załadowania obrazu COFF, dowody są łączone.Zone,UrliSitesą dziedziczone z zestawu wywołującego iHashStrongNamesą pobierane z zestawu COFF.W przypadku użycia Load metody z parametrem
Byte[]i Evidence załadowania obrazu COFF jest używany tylko dostarczony dowód. Dowody wywoływanego zestawu i dowodów obrazu COFF są ignorowane.
Zastanawianie się nad plikami wykonywalnym języka C++ może zgłosić błąd BadImageFormatException. Jest to najprawdopodobniej spowodowane przez kompilator języka C++, który usuwa adresy relokacji lub sekcję .reloc z pliku wykonywalnego. Aby zachować .reloc adres pliku wykonywalnego języka C++, określ /fixed:no , kiedy łączysz.
Jeśli wywołasz tę metodę więcej niż raz w tym samym zestawie, ale z określonymi innymi dowodami, środowisko uruchomieniowe języka wspólnego nie zgłasza FileLoadException wartości, ponieważ nie można określić równości i integralności różnych specyfikacji dowodów. Używanym dowodem jest dowód na to, że odniesie się sukces za pierwszym razem.
W wersji 2.0 środowiska .NET Framework architektura procesora jest dodawana do tożsamości zestawu i może być określona jako część zestawu ciągu nazw. Na przykład "ProcessorArchitecture = msil". Jednak zalecanym sposobem określenia nazwy zestawu jest utworzenie AssemblyName obiektu i przekazanie go do odpowiedniego Load przeciążenia metody. Zobacz: AssemblyName.ProcessorArchitecture.
Zobacz też
Dotyczy
Load(AssemblyName, Evidence)
Przestroga
This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.
Przestroga
Ten interfejs API jest już przestarzały.
Ładuje zestaw przy użyciu elementu AssemblyName. Zestaw jest ładowany do domeny obiektu wywołującego przy użyciu dostarczonych dowodów.
public:
static System::Reflection::Assembly ^ Load(System::Reflection::AssemblyName ^ assemblyRef, System::Security::Policy::Evidence ^ assemblySecurity);
public static System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity);
[System.Obsolete("This method is obsolete and will be removed in a future release of the .NET Framework. Please use an overload of Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public static System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity);
[System.Obsolete]
public static System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity);
static member Load : System.Reflection.AssemblyName * 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 Load which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
static member Load : System.Reflection.AssemblyName * System.Security.Policy.Evidence -> System.Reflection.Assembly
[<System.Obsolete>]
static member Load : System.Reflection.AssemblyName * System.Security.Policy.Evidence -> System.Reflection.Assembly
Public Shared Function Load (assemblyRef As AssemblyName, assemblySecurity As Evidence) As Assembly
Parametry
- assemblyRef
- AssemblyName
Obiekt opisujący zestaw do załadowania.
- assemblySecurity
- Evidence
Dowód ładowania zestawu.
Zwraca
Załadowany zestaw.
- Atrybuty
Wyjątki
assemblyRef to null.
assemblyRef nie można odnaleźć.
assemblyRef nie jest prawidłowym zestawem.
-lub-
Wersja 2.0 lub nowsza środowiska uruchomieniowego języka wspólnego jest obecnie ładowana i assemblyRef została skompilowana z nowszą wersją.
Zestaw lub moduł został załadowany dwukrotnie z dwoma różnymi dowodami.
-lub-
assemblyRef określa zestaw zdalny, ale możliwość wykonywania kodu w zestawach zdalnych jest wyłączona. Zobacz <loadFromRemoteSources>.
Uwagi
FileLoadException jest zgłaszany, jeśli assemblyRef określa pełną nazwę zestawu, a pierwszy zestaw zgodny z prostą nazwą ma inną wersję, kulturę lub token klucza publicznego. Moduł ładujący nie kontynuuje sondowania dla innych zestawów, które są zgodne z prostą nazwą. Począwszy od .NET Framework 4, ponieważ wykonywanie kodu w zestawach zdalnych jest domyślnie wyłączone, FileLoadException jest również zgłaszane, jeśli assemblyRef określa zestaw zdalny. Aby włączyć wykonywanie kodu załadowanego z lokalizacji zdalnych, można użyć <loadFromRemoteSources> elementu konfiguracji.
Uwaga
Nie należy używać elementu AssemblyName z tylko zestawem CodeBase właściwości. Właściwość CodeBase nie dostarcza żadnych elementów tożsamości zestawu (takich jak nazwa lub wersja), dlatego ładowanie nie występuje zgodnie z regułami ładowania według tożsamości, jak można oczekiwać od Load metody . Zamiast tego zestaw jest ładowany przy użyciu reguł ładowania. Aby uzyskać informacje o wadach używania obciążenia z kontekstu, zobacz Assembly.LoadFrom przeciążenie metody lub najlepsze rozwiązania dotyczące ładowania zestawów.
To, czy określone uprawnienia są przyznane do zestawu, czy nie, zależy od dowodów. Zasady scalania kompilowania asemblera i dowodów zabezpieczeń są następujące:
Jeśli używasz Load metody bez Evidence parametru, zestaw jest ładowany z dowodami, że moduł ładujący dostarcza.
Gdy używasz Load metody z parametrem Evidence , elementy dowodów są scalane. Dowody dostarczone jako argument Load metody zastępuje dowody dostarczone przez moduł ładujący.
W przypadku Load użycia przeciążenia metody z parametrem
Byte[]w celu załadowania obrazu wspólnego formatu pliku obiektów (COFF), dowody są dziedziczone z zestawu wywołującego. Dotyczy to architektury .NET Framework w wersji 1.1 z dodatkiem Service Pack 1 (SP1) i późniejszych wersji.Uwaga
W .NET Framework w wersji 1.0 i w wersji 1.1 bez dodatku SP1, gdy używasz Load przeciążenia metody z parametrem
Byte[]w celu załadowania obrazu COFF, dowody są łączone.Zone,UrliSitesą dziedziczone z zestawu wywołującego iHashStrongNamesą pobierane z zestawu COFF.W przypadku użycia Load metody z parametrem
Byte[]i Evidence załadowania obrazu COFF jest używany tylko dostarczony dowód. Dowody wywoływanego zestawu i dowodów obrazu COFF są ignorowane.
Zastanawianie się nad plikami wykonywalnym języka C++ może zgłosić błąd BadImageFormatException. Jest to najprawdopodobniej spowodowane przez kompilator języka C++, który usuwa adresy relokacji lub sekcję .reloc z pliku wykonywalnego. Aby zachować .reloc adres pliku wykonywalnego języka C++, określ /fixed:no , kiedy łączysz.
Uwaga
AssemblyName.Name Jeśli właściwość i AssemblyName.CodeBase właściwość są ustawione, pierwsza próba załadowania zestawu używa nazwy wyświetlanej (w tym wersji, kultury itd., zwróconej przez Assembly.FullName właściwość). Jeśli plik nie zostanie znaleziony, CodeBase zostanie użyty do wyszukania zestawu. Jeśli zestaw zostanie znaleziony przy użyciu metody CodeBase, nazwa wyświetlana jest zgodna z zestawem. Jeśli dopasowanie zakończy się niepowodzeniem FileLoadException , zostanie zgłoszony błąd.
Jeśli wywołasz metodę Load więcej niż raz w tym samym zestawie, ale z określonymi innymi dowodami, środowisko uruchomieniowe języka wspólnego nie zgłasza FileLoadException wartości, ponieważ nie można określić równości i integralności różnych specyfikacji dowodów. Używanym dowodem jest dowód na to, że odniesie się sukces za pierwszym razem.
Zobacz też
Dotyczy
Load(Byte[])
Ładuje zestaw ze wspólnym obrazem opartym na pliku obiektu (COFF) zawierającym emitowany zestaw. Zestaw jest ładowany do domeny aplikacji obiektu wywołującego.
public:
static System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly);
public static System.Reflection.Assembly Load (byte[] rawAssembly);
static member Load : byte[] -> System.Reflection.Assembly
Public Shared Function Load (rawAssembly As Byte()) As Assembly
Parametry
- rawAssembly
- Byte[]
Tablica bajtów, która jest obrazem w formacie COFF, zawierającym emitowany zestaw.
Zwraca
Załadowany zestaw.
Wyjątki
rawAssembly to null.
rawAssembly nie jest prawidłowym zestawem.
-lub-
Wersja 2.0 lub nowsza środowiska uruchomieniowego języka wspólnego jest obecnie ładowana i rawAssembly została skompilowana z nowszą wersją.
Uwagi
Poziom zaufania zestawu ładowanego przy użyciu tej metody jest taki sam jak poziom zaufania zestawu wywołującego. Aby załadować zestaw z tablicy bajtów z poziomem zaufania domeny aplikacji, użyj Load(Byte[], Byte[], SecurityContextSource) przeciążenia metody. Aby uzyskać więcej informacji na temat używania dowodów z przeciążeniami metody, która bierze tablice Load bajtów, zobacz Load(Byte[], Byte[], Evidence) przeciążenie metody.
Zastanawianie się nad plikami wykonywalnym języka C++ może zgłosić błąd BadImageFormatException. Jest to najprawdopodobniej spowodowane przez kompilator języka C++, który usuwa adresy relokacji lub sekcję .reloc z pliku wykonywalnego. Aby zachować .reloc adres pliku wykonywalnego języka C++, określ /fixed:no , kiedy łączysz.
Należy pamiętać, że to przeciążenie metody zawsze tworzy nowy Assembly obiekt z własnym mapowaniem.
Dotyczy
Load(String)
Ładuje zestaw o określonej nazwie.
public:
static System::Reflection::Assembly ^ Load(System::String ^ assemblyString);
public static System.Reflection.Assembly Load (string assemblyString);
static member Load : string -> System.Reflection.Assembly
Public Shared Function Load (assemblyString As String) As Assembly
Parametry
- assemblyString
- String
Długa lub krótka forma nazwy zestawu.
Zwraca
Załadowany zestaw.
Wyjątki
assemblyString to null.
assemblyString jest ciągiem o zerowej długości.
assemblyString nie można odnaleźć.
Nie można załadować pliku, który został znaleziony.
assemblyString nie jest prawidłowym zestawem.
-lub-
Wersja 2.0 lub nowsza środowiska uruchomieniowego języka wspólnego jest obecnie ładowana i assemblyString została skompilowana z nowszą wersją.
Przykłady
Poniższy przykład ładuje zestaw pod w pełni kwalifikowaną nazwą i wyświetla listę wszystkich typów zawartych w określonym zestawie. Aby uzyskać informacje o sposobie uzyskania w pełni kwalifikowanej nazwy zestawu, zobacz Nazwy zestawów.
using namespace System;
using namespace System::Collections;
using namespace System::Reflection;
int main()
{
// You must supply a valid fully qualified assembly name.
Assembly^ SampleAssembly = Assembly::Load
( "SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3" );
array<Type^>^ Types = SampleAssembly->GetTypes();
// Display all the types contained in the specified assembly.
IEnumerator^ myEnum = Types->GetEnumerator();
Type^ oType;
while ( myEnum->MoveNext() )
{
oType = safe_cast<Type^>(myEnum->Current);
Console::WriteLine( oType->Name );
}
}
using System;
using System.Reflection;
class Class1
{
public static void Main()
{
// You must supply a valid fully qualified assembly name.
Assembly SampleAssembly = Assembly.Load
("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3");
// Display all the types contained in the specified assembly.
foreach (Type oType in SampleAssembly.GetTypes()) {
Console.WriteLine(oType.Name);
}
}
}
Imports System.Reflection
Class Class1
Public Shared Sub Main()
' You must supply a valid fully qualified assembly name.
Dim SampleAssembly As [Assembly] = _
[Assembly].Load("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3")
Dim oType As Type
' Display all the types contained in the specified assembly.
For Each oType In SampleAssembly.GetTypes()
Console.WriteLine(oType.Name)
Next oType
End Sub 'LoadSample
End Class
Uwagi
Aby załadować prawidłowy zestaw, zaleca się wywołanie Load metody przez przekazanie długiej formy nazwy zestawu. Długa forma nazwy zestawu składa się z jego prostej nazwy (takiej jak "System" dla zestawu System.dll) wraz z jego wersją, kulturą, tokenem klucza publicznego i opcjonalnie architekturą procesora. Odpowiada właściwości zestawu FullName . Poniższy przykład ilustruje użycie długiej nazwy do załadowania zestawu System.dll dla .NET Framework 4:
using System;
using System.Reflection;
public class Example
{
public static void Main()
{
string longName = "system, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
Assembly assem = Assembly.Load(longName);
if (assem == null)
Console.WriteLine("Unable to load assembly...");
else
Console.WriteLine(assem.FullName);
}
}
// The example displays the following output:
// system, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Imports System.Reflection
Module Example
Public Sub Main()
Dim longName As String = "system, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
Dim assem As Assembly = Assembly.Load(longName)
If assem Is Nothing Then
Console.WriteLine("Unable to load assembly...")
Else
Console.WriteLine(assem.FullName)
End If
End Sub
End Module
' The example displays the following output:
' system, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
FileLoadException jest zgłaszany, jeśli assemblyString określa pełną nazwę zestawu, a pierwszy zestaw zgodny z prostą nazwą ma inną wersję, kulturę lub token klucza publicznego. Moduł ładujący nie kontynuuje sondowania dla innych zestawów, które są zgodne z prostą nazwą.
To, czy określone uprawnienia są przyznane do zestawu, czy nie, zależy od dowodów. Zasady scalania kompilowania asemblera i dowodów zabezpieczeń są następujące:
Jeśli używasz Load metody bez Evidence parametru, zestaw jest ładowany z dowodami, że moduł ładujący dostarcza.
Gdy używasz Load metody z parametrem Evidence , elementy dowodów są scalane. Dowody dostarczone jako argument Load metody zastępuje dowody dostarczone przez moduł ładujący.
W przypadku Load użycia przeciążenia metody z parametrem
Byte[]w celu załadowania obrazu wspólnego formatu pliku obiektów (COFF), dowody są dziedziczone z zestawu wywołującego. Dotyczy to architektury .NET Framework w wersji 1.1 z dodatkiem Service Pack 1 (SP1) i późniejszych wersji.Uwaga
W .NET Framework w wersji 1.0 i w wersji 1.1 bez dodatku SP1, gdy używasz Load przeciążenia metody z parametrem
Byte[]w celu załadowania obrazu COFF, dowody są łączone.Zone,UrliSitesą dziedziczone z zestawu wywołującego iHashStrongNamesą pobierane z zestawu COFF.W przypadku użycia Load metody z parametrem
Byte[]i Evidence załadowania obrazu COFF jest używany tylko dostarczony dowód. Dowody wywoływanego zestawu i dowodów obrazu COFF są ignorowane.
Zastanawianie się nad plikami wykonywalnym języka C++ może zgłosić błąd BadImageFormatException. Jest to najprawdopodobniej spowodowane przez kompilator języka C++, który usuwa adresy relokacji lub sekcję .reloc z pliku wykonywalnego. Aby zachować .reloc adres pliku wykonywalnego języka C++, określ /fixed:no , kiedy łączysz.
W wersji 2.0 środowiska .NET Framework architektura procesora jest dodawana do tożsamości zestawu i może być określona jako część zestawu ciągu nazw. Na przykład "ProcessorArchitecture = msil". Jednak zalecanym sposobem określenia nazwy zestawu jest utworzenie AssemblyName obiektu i przekazanie go do odpowiedniego Load przeciążenia metody. Zobacz: AssemblyName.ProcessorArchitecture.
Zobacz też
Dotyczy
Load(AssemblyName)
Ładuje zestaw przy użyciu elementu AssemblyName.
public:
static System::Reflection::Assembly ^ Load(System::Reflection::AssemblyName ^ assemblyRef);
public static System.Reflection.Assembly Load (System.Reflection.AssemblyName assemblyRef);
static member Load : System.Reflection.AssemblyName -> System.Reflection.Assembly
Public Shared Function Load (assemblyRef As AssemblyName) As Assembly
Parametry
- assemblyRef
- AssemblyName
Obiekt opisujący zestaw do załadowania.
Zwraca
Załadowany zestaw.
Wyjątki
assemblyRef to null.
assemblyRef nie można odnaleźć.
Nie można załadować pliku, który został znaleziony.
-lub-
assemblyRef określa zestaw zdalny, ale możliwość wykonywania kodu w zestawach zdalnych jest wyłączona. Zobacz <loadFromRemoteSources>.
Uwaga: na platformie .NET dla aplikacji ze sklepu Windows lub przenośnej biblioteki klas przechwyć wyjątek klasy bazowej , IOExceptionzamiast tego.
assemblyRef nie jest prawidłowym zestawem. -lub-
Wersja 2.0 lub nowsza środowiska uruchomieniowego języka wspólnego jest obecnie ładowana i assemblyRef została skompilowana z nowszą wersją.
Przykłady
Poniższy przykład tworzy wystąpienie AssemblyName obiektu i używa go do załadowania sysglobal.dll zestawu. W przykładzie zostanie wyświetlona pełna nazwa typów publicznych zestawu.
using System;
using System.Reflection;
public class Example
{
public static void Main()
{
String fullName = "sysglobl, Version=4.0.0.0, Culture=neutral, " +
"PublicKeyToken=b03f5f7f11d50a3a, processor architecture=MSIL";
var an = new AssemblyName(fullName);
var assem = Assembly.Load(an);
Console.WriteLine("Public types in assembly {0}:", assem.FullName);
foreach (var t in assem.GetTypes())
if (t.IsPublic)
Console.WriteLine(" {0}", t.FullName);
}
}
// The example displays the following output:
// Public types in assembly sysglobl, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a:
// System.Globalization.CultureAndRegionInfoBuilder
// System.Globalization.CultureAndRegionModifiers
Imports System.Reflection
Module Example
Public Sub Main()
Dim fullName As String = "sysglobl, Version=4.0.0.0, Culture=neutral, " +
"PublicKeyToken=b03f5f7f11d50a3a, processor architecture=MSIL"
Dim an As New AssemblyName(fullName)
Dim assem As Assembly = Assembly.Load(an)
Console.WriteLine("Public types in assembly {0}:", assem.FullName)
For Each t As Type in assem.GetTypes()
If t.IsPublic Then Console.WriteLine(" {0}", t.FullName)
Next
End Sub
End Module
' The example displays the following output:
' Public types in assembly sysglobl, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a:
' System.Globalization.CultureAndRegionInfoBuilder
' System.Globalization.CultureAndRegionModifiers
Uwagi
FileLoadException jest zgłaszany, jeśli assemblyRef określa pełną nazwę zestawu i pierwszy zestaw zgodny z prostą nazwą ma inną wersję, kulturę lub token klucza publicznego. Moduł ładujący nie kontynuuje sondowania dla innych zestawów, które są zgodne z prostą nazwą. Począwszy od .NET Framework 4, ponieważ wykonywanie kodu w zestawach zdalnych jest domyślnie wyłączone, FileLoadException jest również zgłaszane, jeśli assemblyRef określa zestaw zdalny. Aby włączyć wykonywanie kodu załadowanego z lokalizacji zdalnych, można użyć <loadFromRemoteSources> elementu konfiguracji.
Uwaga
Nie należy używać elementu AssemblyName z tylko zestawem CodeBase właściwości. Właściwość CodeBase nie dostarcza żadnych elementów tożsamości zestawu (takich jak nazwa lub wersja), dlatego ładowanie nie występuje zgodnie z regułami ładowania według tożsamości, jak można oczekiwać od Load metody . Zamiast tego zestaw jest ładowany przy użyciu reguł ładowania. Aby uzyskać informacje o wadach używania obciążenia z kontekstu, zobacz Assembly.LoadFrom przeciążenie metody lub najlepsze rozwiązania dotyczące ładowania zestawów.
To, czy określone uprawnienia są przyznane do zestawu, czy nie, zależy od dowodów. Zasady scalania kompilowania asemblera i dowodów zabezpieczeń są następujące:
Jeśli używasz Load metody bez Evidence parametru, zestaw jest ładowany z dowodami, że moduł ładujący dostarcza.
Gdy używasz Load metody z parametrem Evidence , elementy dowodów są scalane. Dowody dostarczone jako argument Load metody zastępuje dowody dostarczone przez moduł ładujący.
W przypadku Load użycia przeciążenia metody z parametrem
Byte[]w celu załadowania obrazu wspólnego formatu pliku obiektów (COFF), dowody są dziedziczone z zestawu wywołującego. Dotyczy to architektury .NET Framework w wersji 1.1 z dodatkiem Service Pack 1 (SP1) i późniejszych wersji.Uwaga
W .NET Framework w wersji 1.0 i w wersji 1.1 bez dodatku SP1, gdy używasz Load przeciążenia metody z parametrem
Byte[]w celu załadowania obrazu COFF, dowody są łączone.Zone,UrliSitesą dziedziczone z zestawu wywołującego iHashStrongNamesą pobierane z zestawu COFF.W przypadku użycia Load metody z parametrem
Byte[]i Evidence załadowania obrazu COFF jest używany tylko dostarczony dowód. Dowody wywoływanego zestawu i dowodów obrazu COFF są ignorowane.
Zastanawianie się nad plikami wykonywalnym języka C++ może zgłosić błąd BadImageFormatException. Jest to najprawdopodobniej spowodowane przez kompilator języka C++, który usuwa adresy relokacji lub sekcję .reloc z pliku wykonywalnego. Aby zachować .reloc adres pliku wykonywalnego języka C++, określ /fixed:no , kiedy łączysz.
Uwaga
AssemblyName.Name Jeśli właściwość i AssemblyName.CodeBase właściwość są ustawione, pierwsza próba załadowania zestawu używa nazwy wyświetlanej (w tym wersji, kultury itd., zwróconej przez Assembly.FullName właściwość). Jeśli plik nie zostanie znaleziony, CodeBase zostanie użyty do wyszukania zestawu. Jeśli zestaw zostanie znaleziony przy użyciu metody CodeBase, nazwa wyświetlana jest zgodna z zestawem. Jeśli dopasowanie zakończy się niepowodzeniem FileLoadException , zostanie zgłoszony błąd.
Zobacz też
Dotyczy
Load(Byte[], Byte[])
Ładuje zestaw przy użyciu wspólnego obrazu opartego na pliku obiektu (COFF) zawierającego emitowany zestaw, opcjonalnie w tym symbole zestawu. Zestaw jest ładowany do domeny aplikacji obiektu wywołującego.
public:
static System::Reflection::Assembly ^ Load(cli::array <System::Byte> ^ rawAssembly, cli::array <System::Byte> ^ rawSymbolStore);
public static System.Reflection.Assembly Load (byte[] rawAssembly, byte[]? rawSymbolStore);
public static System.Reflection.Assembly Load (byte[] rawAssembly, byte[] rawSymbolStore);
static member Load : byte[] * byte[] -> System.Reflection.Assembly
Public Shared Function Load (rawAssembly As Byte(), rawSymbolStore As Byte()) As Assembly
Parametry
- rawAssembly
- Byte[]
Tablica bajtów, która jest obrazem w formacie COFF, zawierającym emitowany zestaw.
- rawSymbolStore
- Byte[]
Tablica bajtów zawierająca nieprzetworzone bajty reprezentujące symbole zestawu.
Zwraca
Załadowany zestaw.
Wyjątki
rawAssembly to null.
rawAssembly nie jest prawidłowym zestawem.
-lub-
Wersja 2.0 lub nowsza środowiska uruchomieniowego języka wspólnego jest obecnie ładowana i rawAssembly została skompilowana z nowszą wersją.
Uwagi
Poziom zaufania zestawu ładowanego przy użyciu tej metody jest taki sam jak poziom zaufania zestawu wywołującego. Aby załadować zestaw z tablicy bajtów z poziomem zaufania domeny aplikacji, użyj Load(Byte[], Byte[], SecurityContextSource) przeciążenia metody. Aby uzyskać więcej informacji na temat używania dowodów z przeciążeniami metody, która bierze tablice Load bajtów, zobacz Load(Byte[], Byte[], Evidence) przeciążenie metody.
Zastanawianie się nad plikami wykonywalnym języka C++ może zgłosić błąd BadImageFormatException. Jest to najprawdopodobniej spowodowane przez kompilator języka C++, który usuwa adresy relokacji lub sekcję .reloc z pliku wykonywalnego. Aby zachować .reloc adres pliku wykonywalnego języka C++, określ /fixed:no , kiedy łączysz.
Należy pamiętać, że to przeciążenie metody zawsze tworzy nowy Assembly obiekt z własnym mapowaniem.