Freigeben über


Assembly.LoadFrom Methode

Definition

Lädt eine Assembly.

Überlädt

LoadFrom(String, Evidence, Byte[], AssemblyHashAlgorithm)
Veraltet.

Lädt eine Assembly bei Angabe des Dateinamens bzw. -pfads, des Hashwerts, der Sicherheitsbeweise und des Hashalgorithmus.

LoadFrom(String, Byte[], AssemblyHashAlgorithm)

Lädt eine Assembly bei Angabe des Dateinamens bzw. -pfads, des Hashwerts und des Hashalgorithmus.

LoadFrom(String)

Lädt eine Assembly bei Angabe des Anzeigenamens oder Pfads.

LoadFrom(String, Evidence)
Veraltet.

Lädt eine Assembly bei Angabe des Dateinamens oder Pfads und liefert den Sicherheitsbeweis.

Hinweise

Nur .NET Framework: Weitere Informationen finden Sie unter <loadFromRemoteSources> Laden von Assemblys von Remotestandorten.

LoadFrom(String, Evidence, Byte[], AssemblyHashAlgorithm)

Achtung

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.

Lädt eine Assembly bei Angabe des Dateinamens bzw. -pfads, des Hashwerts, der Sicherheitsbeweise und des Hashalgorithmus.

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

Parameter

assemblyFile
String

Der Name oder Pfad der Datei, die das Manifest der Assembly enthält.

securityEvidence
Evidence

Beweis für das Laden der Assembly.

hashValue
Byte[]

Der Wert des errechneten Hashcodes.

hashAlgorithm
AssemblyHashAlgorithm

Der Hashalgorithmus für das Hashing von Dateien und das Generieren des starken Namens.

Gibt zurück

Die geladene Assembly.

Attribute

Ausnahmen

assemblyFile ist null.

assemblyFile wurde nicht gefunden, oder das Modul, das Sie laden möchten, enthält keine Angabe der Dateinamenerweiterung.

Eine gefundene Datei konnte nicht geladen werden.

- oder -

Der securityEvidence ist nicht mehrdeutig und wird als ungültig bestimmt.

- oder -

assemblyFile gibt einen Speicherort an, der basierend auf <loadFromRemoteSources> deaktiviert ist.

assemblyFile ist keine gültige Assembly für die derzeit geladene Runtime; beispielsweise eine 32-Bit-Assembly in einem 64-Bit-Prozess.

Eine CodeBase, die nicht mit "file://" beginnt, wurde ohne die erforderliche WebPermission angegeben.

Der assemblyFile-Parameter ist eine leere Zeichenfolge ("").

Der Assemblyname überschreitet die im System definierte maximale Länge.

Hinweise

Der assemblyFile Parameter muss auf einen URI ohne Escapezeichen verweisen. Diese Methode stellt Escapezeichen für alle ungültigen Zeichen im URI bereit.

Hinweis

Ftp (File Transfer Protocol) wird nicht unterstützt. Wenn der für assemblyFile bereitgestellte URI eine FTP-Adresse ist, wird die Assembly nicht geladen. Es wird keine Ausnahme ausgelöst.

assemblyFile kann absolut oder relativ zum aktuellen Verzeichnis sein.

Assemblys können in einen von drei Kontexten geladen oder ohne Kontext geladen werden:

  • Der Ladekontext enthält Assemblys, die beim Testen gefunden werden: im GAC, in einem Hostassemblyspeicher, wenn die Runtime gehostet wird, oder in der ApplicationBase und PrivateBinPath der Anwendungsdomäne. Die meisten Überladungen der Methode Load laden Assemblys in diesen Kontext.

  • Der Kontext zum Laden aus enthält Assemblys, für die der Benutzer einen Pfad angegeben hat, der nicht in den Verzeichnissen enthalten ist, die durch Diesuchvorgänge durchsucht werden. LoadFrom, CreateInstanceFrom und ExecuteAssembly sind Beispiel für Methoden, die anhand des Pfads laden.

    Weitere Informationen finden Sie unter <loadFromRemoteSources> Laden von Assemblys von Remotestandorten.

  • Der Nur-Reflektionskontext enthält Assemblys, die mit den ReflectionOnlyLoad Methoden und ReflectionOnlyLoadFrom geladen werden. Code in diesen Kontexten kann nicht ausgeführt werden.

  • Wenn der Benutzer die Assembly generiert oder gefunden hat, befindet sie sich in keinem Kontext. Dies gilt für Assemblys, die mithilfe von Überladungen der -Methode geladen werden, die Load ein Bytearray angeben, das eine Assembly enthält, und für vorübergehende dynamische Assemblys, die mit Reflektionsausgabe erstellt und nicht auf dem Datenträger gespeichert werden.

Der Kontext zum Laden von ermöglicht das Laden einer Assembly aus einem Pfad, der nicht in der Untersuchung enthalten ist, und ermöglicht es dennoch, Abhängigkeiten von diesem Pfad zu finden und zu laden, da die Pfadinformationen vom Kontext verwaltet werden.

Die LoadFrom -Methode hat die folgenden Nachteile. Verwenden Sie stattdessen Load.

  • Wenn eine Assembly mit der gleichen Identität bereits geladen wurde, gibt LoadFrom die geladene Assembly zurück, auch wenn ein anderer Pfad angegeben wurde.

  • Wenn eine Assembly mit LoadFromgeladen wird und später eine Assembly im Ladekontext versucht, dieselbe Assembly anhand des Anzeigenamens zu laden, schlägt der Ladeversuch fehl. Dies kann auftreten, wenn eine Assembly deserialisiert ist.

  • Wenn eine Assembly mit LoadFromgeladen wird und der Untersuchungspfad eine Assembly mit derselben Identität enthält, aber ein anderer Speicherort, ein , MissingMethodExceptionoder ein anderes unerwartetes InvalidCastExceptionVerhalten auftreten kann.

  • LoadFrom fordert FileIOPermissionAccess.Read und FileIOPermissionAccess.PathDiscovery oder WebPermission im angegebenen Pfad.

  • Wenn ein natives Image für assemblyFilevorhanden ist, wird es nicht verwendet. Die Assembly kann nicht domänenneutral geladen werden.

Das Erteilen bestimmter Berechtigungen für eine Assembly beruht auf Beweisen. Die Regeln für das Zusammenführen von Assembly- und Sicherheitsnachweisen sind wie folgt:

  • Wenn Sie eine LoadFrom Methode ohne Evidence Parameter verwenden, wird die Assembly mit dem Beweis geladen, den der Ladeprogramm liefert.

  • Wenn Sie die LoadFrom-Methode mit einem Evidence-Parameter verwenden, werden einzelne Beweise zusammengeführt. Beweisstücke, die als Argument für die LoadFrom Methode angegeben werden, ersetzten die vom Ladeprogramm gelieferten Beweise.

  • Wenn Sie diese Methode mehrmals für dieselbe Assembly aufrufen, jedoch mit einem anderen angegebenen Beweis, löst die Common Language Runtime keine aus FileLoadException , da die Gleichheit und Integrität der verschiedenen Beweisspezifikationen nicht bestimmt werden kann. Der Beweis, der zuerst erfolgreich ist, sind die beweise, die verwendet werden.

  • Wenn Sie eine LoadFrom Methode mit einem Byte[] Parameter verwenden, um ein COFF-Bild (Common Object File Format) zu laden, werden Beweise kombiniert. Zoneund UrlSite werden von der aufrufenden Assembly geerbt, und Hash und StrongName werden von der COFF-Assembly übernommen.

  • Wenn Sie eine LoadFrom Methode mit einem Byte[] Parameter verwenden und Evidence ein COFF-Image laden, wird nur der angegebene Beweis verwendet. Der Nachweis der aufrufenden Assembly und der Nachweis des COFF-Images werden ignoriert.

Gilt für:

LoadFrom(String, Byte[], AssemblyHashAlgorithm)

Quelle:
Assembly.cs
Quelle:
Assembly.cs
Quelle:
Assembly.cs

Lädt eine Assembly bei Angabe des Dateinamens bzw. -pfads, des Hashwerts und des Hashalgorithmus.

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

Parameter

assemblyFile
String

Der Name oder Pfad der Datei, die das Manifest der Assembly enthält.

hashValue
Byte[]

Der Wert des errechneten Hashcodes.

hashAlgorithm
AssemblyHashAlgorithm

Der Hashalgorithmus für das Hashing von Dateien und das Generieren des starken Namens.

Gibt zurück

Die geladene Assembly.

Ausnahmen

Nur .NET Core und .NET 5 und höher: In allen Fällen.

assemblyFile ist null.

assemblyFile wurde nicht gefunden, oder das Modul, das Sie laden möchten, enthält keine Angabe zur Dateinamenerweiterung.

Eine gefundene Datei konnte nicht geladen werden.

- oder -

assemblyFile gibt einen Speicherort an, der basierend auf <loadFromRemoteSources> deaktiviert ist.

assemblyFile ist keine gültige Assembly für die derzeit geladene Runtime; beispielsweise eine 32-Bit-Assembly in einem 64-Bit-Prozess.

Eine CodeBase, die nicht mit "file://" beginnt, wurde ohne die erforderliche WebPermission angegeben.

Der assemblyFile-Parameter ist eine leere Zeichenfolge ("").

Der Assemblyname überschreitet die im System definierte maximale Länge.

Hinweise

In .NET Core und .NET 5 und höher wird diese Methode ausgelöst NotSupportedException , wenn sie aufgerufen wird. Verwenden Sie stattdessen LoadFrom(String).

Der assemblyFile Parameter muss auf einen URI ohne Escapezeichen verweisen. Diese Methode stellt Escapezeichen für alle ungültigen Zeichen im URI bereit.

Hinweis

Ftp (File Transfer Protocol) wird nicht unterstützt. Wenn der für assemblyFile bereitgestellte URI eine FTP-Adresse ist, wird die Assembly nicht geladen. Es wird keine Ausnahme ausgelöst.

assemblyFile kann absolut oder relativ zum aktuellen Verzeichnis sein.

Assemblys können in einen von drei Kontexten geladen oder ohne Kontext geladen werden:

  • Der Ladekontext enthält Assemblys, die durch Überprüfen gefunden werden: im globalen Assemblycache, in einem Hostassemblyspeicher, wenn die Runtime gehostet wird, oder in der ApplicationBase und PrivateBinPath der Anwendungsdomäne. Die meisten Überladungen der Methode Load laden Assemblys in diesen Kontext.

  • Der Kontext zum Laden aus enthält Assemblys, für die der Benutzer einen Pfad angegeben hat, der nicht in der Untersuchung enthalten ist. LoadFrom, CreateInstanceFrom und ExecuteAssembly sind Beispiel für Methoden, die anhand des Pfads laden.

    Weitere Informationen finden Sie unter <loadFromRemoteSources> Laden von Assemblys von Remotestandorten.

  • Der Nur-Reflektionskontext enthält Assemblys, die mit den ReflectionOnlyLoad Methoden und ReflectionOnlyLoadFrom geladen werden. Code in diesen Kontexten kann nicht ausgeführt werden.

  • Wenn der Benutzer die Assembly generiert oder gefunden hat, befindet sie sich in keinem Kontext. Dies gilt für Assemblys, die mithilfe von Überladungen der -Methode geladen werden, die Load ein Bytearray angeben, das eine Assembly enthält, und für vorübergehende dynamische Assemblys, die mit Reflektionsausgabe erstellt und nicht auf dem Datenträger gespeichert werden.

Der Kontext zum Laden aus ermöglicht das Laden einer Assembly aus einem Pfad, der nicht in der Untersuchung enthalten ist, und ermöglicht es dennoch, Abhängigkeiten von diesem Pfad zu finden und zu laden, da die Pfadinformationen vom Kontext verwaltet werden.

Die LoadFrom -Methode hat die folgenden Nachteile. Verwenden Sie stattdessen Load.

  • Wenn eine Assembly mit der gleichen Identität bereits geladen wurde, gibt LoadFrom die geladene Assembly zurück, auch wenn ein anderer Pfad angegeben wurde.

  • Wenn eine Assembly mit LoadFromgeladen wird und später eine Assembly im Ladekontext versucht, dieselbe Assembly anhand des Anzeigenamens zu laden, schlägt der Ladeversuch fehl. Dies kann auftreten, wenn eine Assembly deserialisiert ist.

  • Wenn eine Assembly mit LoadFromgeladen wird und der Untersuchungspfad eine Assembly mit derselben Identität enthält, aber ein anderer Speicherort, ein , MissingMethodExceptionoder ein anderes unerwartetes InvalidCastExceptionVerhalten auftreten kann.

  • LoadFrom fordert FileIOPermissionAccess.Read und FileIOPermissionAccess.PathDiscovery oder WebPermission im angegebenen Pfad.

  • Wenn ein natives Image für assemblyFilevorhanden ist, wird es nicht verwendet. Die Assembly kann nicht als domänenneutral geladen werden.

Die Assembly wird mit dem Beweis geladen, den der Ladeprogramm liefert.

Gilt für:

LoadFrom(String)

Quelle:
Assembly.cs
Quelle:
Assembly.cs
Quelle:
Assembly.cs

Lädt eine Assembly bei Angabe des Anzeigenamens oder Pfads.

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

Parameter

assemblyFile
String

Der Name oder Pfad der Datei, die das Manifest der Assembly enthält.

Gibt zurück

Die geladene Assembly.

Ausnahmen

assemblyFile ist null.

assemblyFile wurde nicht gefunden, oder das Modul, das Sie laden möchten, enthält keine Angabe der Dateinamenerweiterung.

Eine gefundene Datei konnte nicht geladen werden.

- oder -

Nur .NET Framework: assemblyFile Gibt einen Speicherort an, der basierend auf <loadFromRemoteSources> deaktiviert ist.

assemblyFile ist keine gültige Assembly für die derzeit geladene Runtime; beispielsweise eine 32-Bit-Assembly in einem 64-Bit-Prozess.

Eine CodeBase, die nicht mit "file://" beginnt, wurde ohne die erforderliche WebPermission angegeben.

Der assemblyFile-Parameter ist eine leere Zeichenfolge ("").

Der Assemblyname überschreitet die im System definierte maximale Länge.

Beispiele

Im folgenden Beispiel wird eine Assembly mit ihrem Dateinamen oder Pfad geladen.

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

Hinweise

Der assemblyFile Parameter muss auf einen URI ohne Escapezeichen verweisen. Diese Methode stellt Escapezeichen für alle ungültigen Zeichen im URI bereit.

Hinweis

Ftp (File Transfer Protocol) wird nicht unterstützt. Wenn der für assemblyFile bereitgestellte URI eine FTP-Adresse ist, wird die Assembly nicht geladen. Es wird keine Ausnahme ausgelöst.

assemblyFile kann absolut oder relativ zum aktuellen Verzeichnis sein.

Nur .NET Framework: Assemblys können in einen von drei Kontexten geladen oder ohne Kontext geladen werden:

  • Der Ladekontext enthält Assemblys, die beim Testen gefunden werden: im GAC, in einem Hostassemblyspeicher, wenn die Runtime gehostet wird, oder in der ApplicationBase und PrivateBinPath der Anwendungsdomäne. Die meisten Überladungen der Methode Load laden Assemblys in diesen Kontext.

  • Der Kontext zum Laden aus enthält Assemblys, für die der Benutzer einen Pfad angegeben hat, der nicht in den Verzeichnissen enthalten ist, die durch Diesuchvorgänge durchsucht werden. Außerdem können Abhängigkeiten von diesem Pfad gefunden und geladen werden, da die Pfadinformationen vom Kontext verwaltet werden. LoadFrom, CreateInstanceFrom und ExecuteAssembly sind Beispiel für Methoden, die anhand des Pfads laden.

    Weitere Informationen finden Sie unter <loadFromRemoteSources> Laden von Assemblys von Remotestandorten.

  • Der Nur-Reflektionskontext enthält Assemblys, die mit den ReflectionOnlyLoad Methoden und ReflectionOnlyLoadFrom geladen werden. Code in diesen Kontexten kann nicht ausgeführt werden.

  • Wenn der Benutzer die Assembly generiert oder gefunden hat, befindet sie sich in keinem Kontext. Dies gilt für Assemblys, die mithilfe von Überladungen der -Methode geladen werden, die Load ein Bytearray angeben, das eine Assembly enthält, und für vorübergehende dynamische Assemblys, die mit Reflektionsausgabe erstellt und nicht auf dem Datenträger gespeichert werden.

Die LoadFrom -Methode hat die folgenden Nachteile. Verwenden Sie stattdessen Load.

  • Wenn eine Assembly mit der gleichen Identität bereits im LoadFrom-Kontext geladen wurde, gibt LoadFrom die geladene Assembly zurück, auch wenn ein anderer Pfad angegeben wurde.

  • Eine Assembly kann im Kontext zum Laden aus geladen werden, obwohl im Ladekontext eine Assembly mit derselben Identität vorhanden ist. Die Interoperabilität zwischen den beiden Assemblys funktioniert nicht, was zu Fehlern wie InvalidCastException, MissingMethodExceptionoder einem anderen unerwarteten Verhalten führt.

  • Wenn Sie LoadFrom einen Speicherort aufrufen, der sich im Suchpfad befindet, wird die Assembly im Ladekontext und nicht im Kontext zum Laden von geladen.

  • Wenn eine Assemblydatei, deren Identität durch eine Bindungsumleitungsrichtlinie übertragen wird, an LoadFromübergeben wird, wird die Richtlinie angewendet, und die Assembly wird aus dem Überprüfungspfad im Ladekontext geladen.

  • Wenn eine Assembly im Kontext zum Laden aus geladen wird und später eine Assembly im Ladekontext versucht, dieselbe Assembly nach Anzeigename zu laden, schlägt der Ladeversuch fehl. Dies kann auftreten, wenn eine Assembly deserialisiert ist.

  • LoadFrom fordert FileIOPermissionAccess.Read und FileIOPermissionAccess.PathDiscovery oder WebPermission im angegebenen Pfad.

  • Wenn ein natives Image für assemblyFilevorhanden ist, wird es nicht verwendet. Die Assembly kann nicht domänenneutral geladen werden.

Gilt für:

LoadFrom(String, Evidence)

Achtung

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.

Lädt eine Assembly bei Angabe des Dateinamens oder Pfads und liefert den Sicherheitsbeweis.

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

Parameter

assemblyFile
String

Der Name oder Pfad der Datei, die das Manifest der Assembly enthält.

securityEvidence
Evidence

Beweis für das Laden der Assembly.

Gibt zurück

Die geladene Assembly.

Attribute

Ausnahmen

assemblyFile ist null.

assemblyFile wurde nicht gefunden, oder das Modul, das Sie laden möchten, enthält keine Angabe der Dateinamenerweiterung.

Eine gefundene Datei konnte nicht geladen werden.

- oder -

Der securityEvidence ist nicht mehrdeutig und wird als ungültig bestimmt.

- oder -

assemblyFile gibt einen Speicherort an, der basierend auf <loadFromRemoteSources> deaktiviert ist.

assemblyFile ist keine gültige Assembly für die derzeit geladene Runtime; beispielsweise eine 32-Bit-Assembly in einem 64-Bit-Prozess.

Eine CodeBase, die nicht mit "file://" beginnt, wurde ohne die erforderliche WebPermission angegeben.

Der assemblyFile-Parameter ist eine leere Zeichenfolge ("").

Der Assemblyname überschreitet die im System definierte maximale Länge.

Hinweise

Der assemblyFile Parameter muss auf einen URI ohne Escapezeichen verweisen. Diese Methode stellt Escapezeichen für alle ungültigen Zeichen im URI bereit.

Hinweis

Ftp (File Transfer Protocol) wird nicht unterstützt. Wenn der für assemblyFile bereitgestellte URI eine FTP-Adresse ist, wird die Assembly nicht geladen. Es wird keine Ausnahme ausgelöst.

assemblyFile kann absolut oder relativ zum aktuellen Verzeichnis sein.

Assemblys können in einen von drei Kontexten geladen oder ohne Kontext geladen werden:

  • Der Ladekontext enthält Assemblys, die beim Testen gefunden werden: im GAC, in einem Hostassemblyspeicher, wenn die Runtime gehostet wird, oder in der ApplicationBase und PrivateBinPath der Anwendungsdomäne. Die meisten Überladungen der Methode Load laden Assemblys in diesen Kontext.

  • Der Kontext zum Laden aus enthält Assemblys, für die der Benutzer einen Pfad angegeben hat, der nicht in den Verzeichnissen enthalten ist, die durch Diesuchvorgänge durchsucht werden. LoadFrom, CreateInstanceFrom und ExecuteAssembly sind Beispiel für Methoden, die anhand des Pfads laden.

    Weitere Informationen finden Sie unter <loadFromRemoteSources> Laden von Assemblys von Remotestandorten.

  • Der Nur-Reflektionskontext enthält Assemblys, die mit den ReflectionOnlyLoad Methoden und ReflectionOnlyLoadFrom geladen werden. Code in diesen Kontexten kann nicht ausgeführt werden.

  • Wenn der Benutzer die Assembly generiert oder gefunden hat, befindet sie sich in keinem Kontext. Dies gilt für Assemblys, die mithilfe von Überladungen der -Methode geladen werden, die Load ein Bytearray angeben, das eine Assembly enthält, und für vorübergehende dynamische Assemblys, die mit Reflektionsausgabe erstellt und nicht auf dem Datenträger gespeichert werden.

Der Kontext zum Laden von ermöglicht das Laden einer Assembly aus einem Pfad, der nicht in der Untersuchung enthalten ist, und ermöglicht es dennoch, Abhängigkeiten von diesem Pfad zu finden und zu laden, da die Pfadinformationen vom Kontext verwaltet werden.

Die LoadFrom -Methode hat die folgenden Nachteile. Verwenden Sie stattdessen Load.

  • Wenn eine Assembly mit der gleichen Identität bereits geladen wurde, gibt LoadFrom die geladene Assembly zurück, auch wenn ein anderer Pfad angegeben wurde.

  • Wenn eine Assembly mit LoadFromgeladen wird und später eine Assembly im Ladekontext versucht, dieselbe Assembly anhand des Anzeigenamens zu laden, schlägt der Ladeversuch fehl. Dies kann auftreten, wenn eine Assembly deserialisiert ist.

  • Wenn eine Assembly mit LoadFromgeladen wird und der Untersuchungspfad eine Assembly mit derselben Identität enthält, aber ein anderer Speicherort, ein , MissingMethodExceptionoder ein anderes unerwartetes InvalidCastExceptionVerhalten auftreten kann.

  • LoadFrom fordert FileIOPermissionAccess.Read und FileIOPermissionAccess.PathDiscovery oder WebPermission im angegebenen Pfad.

  • Wenn ein natives Image für assemblyFilevorhanden ist, wird es nicht verwendet. Die Assembly kann nicht domänenneutral geladen werden.

Das Erteilen bestimmter Berechtigungen für eine Assembly beruht auf Beweisen. Die Regeln für das Zusammenführen von Assembly- und Sicherheitsnachweisen sind wie folgt:

  • Wenn Sie eine LoadFrom Methode ohne Evidence Parameter verwenden, wird die Assembly mit dem Beweis geladen, den der Ladeprogramm liefert.

  • Wenn Sie die LoadFrom-Methode mit einem Evidence-Parameter verwenden, werden einzelne Beweise zusammengeführt. Beweisstücke, die als Argument für die LoadFrom Methode angegeben werden, ersetzten die vom Ladeprogramm gelieferten Beweise.

  • Wenn Sie diese Methode mehrmals für dieselbe Assembly aufrufen, jedoch mit einem anderen angegebenen Beweis, löst die Common Language Runtime keine aus FileLoadException , da die Gleichheit und Integrität der verschiedenen Beweisspezifikationen nicht bestimmt werden kann. Der Beweis, der zuerst erfolgreich ist, sind die beweise, die verwendet werden.

  • Wenn Sie eine LoadFrom Methode mit einem Byte[] Parameter verwenden, um ein COFF-Bild (Common Object File Format) zu laden, werden Beweise kombiniert. Zoneund UrlSite werden von der aufrufenden Assembly geerbt, und Hash und StrongName werden von der COFF-Assembly übernommen.

  • Wenn Sie eine LoadFrom Methode mit einem Byte[] Parameter verwenden und Evidence ein COFF-Image laden, wird nur der angegebene Beweis verwendet. Der Nachweis der aufrufenden Assembly und der Nachweis des COFF-Images werden ignoriert.

Weitere Informationen

Gilt für: