MissingSatelliteAssemblyException Klasse

Definition

Die Ausnahme, die ausgelöst wird, wenn die Satellitenassembly für die Ressourcen der Standardkultur fehlt.

public ref class MissingSatelliteAssemblyException : SystemException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class MissingSatelliteAssemblyException : SystemException
public class MissingSatelliteAssemblyException : SystemException
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type MissingSatelliteAssemblyException = class
    inherit SystemException
type MissingSatelliteAssemblyException = class
    inherit SystemException
Public Class MissingSatelliteAssemblyException
Inherits SystemException
Vererbung
MissingSatelliteAssemblyException
Attribute

Beispiele

Im folgenden Beispiel wird das NeutralResourcesLanguageAttribute Attribut verwendet, um anzugeben, dass Englisch die Standardkultur der App ist und dass ihre Ressourcen in einer Satellitenassembly gespeichert werden. Das Beispiel selbst enthält Ressourcen in .txt Dateien für die englischen und französischen Kulturen, wie in der folgenden Tabelle beschrieben:

Kultur Ressourcenname/Wert Dateiname
English Greet=Hello Greet.en.txt
Französisch Greet=Bonjour Greet.fr.txt

Der folgende Quellcode erstellt eine App, die die aktuelle UI-Kultur zuerst in Französisch (Frankreich) und dann in Russisch (Russland) ändert und in beiden Fällen eine entsprechende kulturspezifische Ressource anzeigt.

using System;
using System.Globalization;
using System.Resources;
using System.Threading;

[assembly:NeutralResourcesLanguageAttribute("en", UltimateResourceFallbackLocation.Satellite)]

public class Example
{
   public static void Main()
   {
      ResourceManager rm = new ResourceManager("GreetResources", typeof(Example).Assembly); 
      Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR");
      Console.WriteLine("The current UI culture is {0}", Thread.CurrentThread.CurrentUICulture.Name);
      Console.WriteLine(rm.GetString("Greet"));
      
      Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU");
      Console.WriteLine("The current UI culture is {0}", Thread.CurrentThread.CurrentUICulture.Name);
      Console.WriteLine(rm.GetString("Greet"));
   }
}
// The example displays the following output when created using BuildNoDefault.bat: 
//    The current UI culture is fr-FR
//    Bonjour
//    The current UI culture is ru-RU
//    
//    Unhandled Exception: System.Resources.MissingSatelliteAssemblyException: 
//    The satellite assembly named "HelloWorld.resources.dll, PublicKeyToken=" for fallback culture 
//    "en" either could not be found or could not be loaded. This is generally a setup problem. 
//    Please consider reinstalling or repairing the application.
//       at System.Resources.ManifestBasedResourceGroveler.HandleSatelliteMissing()
//       at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo cult
//    ure, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackC
//    rawlMark& stackMark)
//       at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture
//    , Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
//       at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean
//     createIfNotExists, Boolean tryParents)
//       at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
//       at Example.Main()
// The example displays the following output when created using BuildDefault.bat:
//    The current UI culture is fr-FR
//    Bonjour
//    The current UI culture is ru-RU
//    Hello
Imports System.Globalization
Imports System.Resources
Imports System.Threading

<assembly:NeutralResourcesLanguageAttribute("en", UltimateResourceFallbackLocation.Satellite)>

Module Example
   Public Sub Main()
      Dim rm As New ResourceManager("GreetResources", GetType(Example).Assembly) 
      Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr-FR")
      Console.WriteLine("The current UI culture is {0}", Thread.CurrentThread.CurrentUICulture.Name)
      Console.WriteLine(rm.GetString("Greet"))
      
      Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("ru-RU")
      Console.WriteLine("The current UI culture is {0}", Thread.CurrentThread.CurrentUICulture.Name)
      Console.WriteLine(rm.GetString("Greet"))
   End Sub
End Module
' The example displays the following output:
'    The current UI culture is fr-FR
'    Bonjour
'    The current UI culture is ru-RU
'    
'    Unhandled Exception: System.Resources.MissingSatelliteAssemblyException: 
'    The satellite assembly named "HelloWorld.resources.dll, PublicKeyToken=" for fallback culture 
'    "en" either could not be found or could not be loaded. This is generally a setup problem. 
'    Please consider reinstalling or repairing the application.
'       at System.Resources.ManifestBasedResourceGroveler.HandleSatelliteMissing()
'       at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo cult
'    ure, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackC
'    rawlMark& stackMark)
'       at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture
'    , Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
'       at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean
'     createIfNotExists, Boolean tryParents)
'       at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
'       at Example.Main()
' The example displays the following output when created using BuildDefault.bat:
'    The current UI culture is fr-FR
'    Bonjour
'    The current UI culture is ru-RU
'    Hello

Sie können die folgende Batchdatei verwenden, um die C#-Version des Beispiels zu erstellen und auszuführen. Wenn Sie Visual Basic verwenden, ersetzen Sie diese durch cscvbc, und ersetzen Sie die .cs Erweiterung durch .vb. Wenn das Beispiel ausgeführt wird, zeigt es eine französische Sprachzeichenfolge an, löst jedoch eine MissingSatelliteAssemblyException Ausnahme aus, wenn die aktuelle Kultur Russisch (Russland) ist. Dies liegt daran, dass die Satellitenassembly en\HelloWorld.dll, die die Ressourcen der Standardkultur enthält, nicht vorhanden ist.

vbc HelloWorld.vb

md fr
resgen Greet.fr.txt
al /out:fr\HelloWorld.resources.dll /culture:fr /embed:GreetResources.fr.resources

HelloWorld

Sie können die folgende Batchdatei verwenden, um die Visual Basic-Version des Beispiels zu erstellen und auszuführen. Wenn Sie C# verwenden, ersetzen Sie vbc durch csc, und ersetzen Sie die Erweiterung .vb durch .cs. Wenn das Beispiel ausgeführt wird, wird eine französische Sprachzeichenfolge angezeigt, wenn die aktuelle UI-Kultur Französisch (Frankreich) ist. Wenn die aktuelle Benutzeroberflächenkultur Russland (Russisch) ist, wird eine englische Zeichenfolge angezeigt, da russische Sprachressourcen nicht vorhanden sind, aber der Ressourcen-Manager kann die Ressourcen der Standardkultur aus der Satellitenassembly en\HelloWorld2.dllladen.

vbc HelloWorld.vb /out:HelloWorld2.exe

md fr
resgen GreetResources.fr.txt
al /out:fr\HelloWorld2.resources.dll /culture:fr /embed:GreetResources.fr.resources

md en
resgen GreetResources.en.txt
al /out:en\HelloWorld2.resources.dll /culture:en /embed:GreetResources.en.resources

HelloWorld2

Hinweise

Die Standardkultur ist die Kultur, deren Ressourcen geladen werden, wenn die entsprechenden kulturspezifischen Ressourcen nicht gefunden werden können. Standardmäßig befinden sich Ressourcen für die Standardkultur in der Hauptassembly und wird MissingManifestResourceException ausgelöst, wenn der Ressourcen-Manager versucht, abzurufen, aber keine Ressource für die Standardkultur finden kann. Das .NET Framework lädt jedoch die Ressourcen für die Standardkultur einer App aus einer Satellitenassembly, wenn das Attribut NeutralResourcesLanguageAttribute einen Wert von UltimateResourceFallbackLocation.Satellite für den Standortparameter angibt. Wenn dies der Fall ist, wird die MissingSatelliteAssemblyException Ausnahme ausgelöst, wenn der Ressourcenmanager versucht, eine Ressource der Standardkultur abzurufen, und die Satellitenassembly für die im NeutralResourcesLanguageAttribute Attribut angegebene Kultur fehlt. Beachten Sie, dass die Ausnahme von einer Ressourcenabrufmethode ausgelöst wird, z ResourceManager.GetString . B. oder ResourceManager.GetObject, und nicht, wenn das ResourceManager Objekt instanziiert wird.

MissingSatelliteAssemblyException verwendet die HRESULT-COR_E_MISSINGSATELLITEASSEMBLY, die den Wert 0x80131536 hat.

MissingSatelliteAssemblyException verwendet die Standardimplementierung Equals , die die Referenzgleichheit unterstützt.

Eine Liste der anfänglichen Eigenschaftswerte für eine Instanz der MissingSatelliteAssemblyException Klasse finden Sie in den MissingSatelliteAssemblyException Konstruktoren.

Note

Sie sollten das Attribut immer verwenden, um die NeutralResourcesLanguageAttribute Standardkultur Ihrer App zu definieren, damit, wenn eine Ressource für eine bestimmte Kultur nicht verfügbar ist, das akzeptable Verhalten ihrer Anwendung anzeigt.

Konstruktoren

Name Beschreibung
MissingSatelliteAssemblyException()

Initialisiert eine neue Instanz der MissingSatelliteAssemblyException Klasse mit Standardeigenschaften.

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)

Initialisiert eine neue Instanz der MissingSatelliteAssemblyException Klasse aus serialisierten Daten.

MissingSatelliteAssemblyException(String, Exception)

Initialisiert eine neue Instanz der MissingSatelliteAssemblyException Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die die Ursache dieser Ausnahme ist.

MissingSatelliteAssemblyException(String, String)

Initialisiert eine neue Instanz der MissingSatelliteAssemblyException Klasse mit einer angegebenen Fehlermeldung und dem Namen einer neutralen Kultur.

MissingSatelliteAssemblyException(String)

Initialisiert eine neue Instanz der MissingSatelliteAssemblyException Klasse mit der angegebenen Fehlermeldung.

Eigenschaften

Name Beschreibung
CultureName

Ruft den Namen der Standardkultur ab.

Data

Ruft eine Auflistung von Schlüssel-Wert-Paaren ab, die zusätzliche benutzerdefinierte Informationen zur Ausnahme bereitstellen.

(Geerbt von Exception)
HelpLink

Dient zum Abrufen oder Festlegen eines Links zur Hilfedatei, die dieser Ausnahme zugeordnet ist.

(Geerbt von Exception)
HResult

Dient zum Abrufen oder Festlegen von HRESULT, einem codierten numerischen Wert, der einer bestimmten Ausnahme zugewiesen ist.

(Geerbt von Exception)
InnerException

Ruft die Exception Instanz ab, die die aktuelle Ausnahme verursacht hat.

(Geerbt von Exception)
Message

Ruft eine Nachricht ab, die die aktuelle Ausnahme beschreibt.

(Geerbt von Exception)
Source

Dient zum Abrufen oder Festlegen des Namens der Anwendung oder des Objekts, das den Fehler verursacht.

(Geerbt von Exception)
StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames im Aufrufstapel ab.

(Geerbt von Exception)
TargetSite

Ruft die Methode ab, die die aktuelle Ausnahme auslöst.

(Geerbt von Exception)

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetBaseException()

Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird die Exception Ursache einer oder mehrerer nachfolgenden Ausnahmen zurückgegeben.

(Geerbt von Exception)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetObjectData(SerializationInfo, StreamingContext)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, werden die SerializationInfo Informationen zur Ausnahme festgelegt.

(Geerbt von Exception)
GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.

(Geerbt von Exception)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
ToString()

Erstellt und gibt eine Zeichenfolgendarstellung der aktuellen Ausnahme zurück.

(Geerbt von Exception)

Ereignisse

Name Beschreibung
SerializeObjectState

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmestatusobjekt zu erstellen, das serialisierte Daten zu der Ausnahme enthält.

(Geerbt von Exception)

Gilt für:

Weitere Informationen