MissingSatelliteAssemblyException Klasse

Definition

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

public ref class MissingSatelliteAssemblyException : SystemException
public class MissingSatelliteAssemblyException : SystemException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class MissingSatelliteAssemblyException : SystemException
type MissingSatelliteAssemblyException = class
    inherit SystemException
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
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 seine 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
Englisch 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 auf 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 csc mit vbc und ersetzen Sie die Erweiterung .cs mit .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 sie durch csc, und ersetzen Sie die .vb Erweiterung 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 UI-Kultur Russland (Russisch) ist, wird eine englische Sprachzeichenfolge angezeigt, da russische Sprachressourcen nicht vorhanden sind, aber der Ressourcenmanager kann die Ressourcen der Standardkultur aus der Satellitenassembly en\HelloWorld2.dll laden.

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, eine Ressource für die Standardkultur abzurufen, aber keine Ressource für die Standardkultur zu finden. Die .NET Framework laden jedoch die Ressourcen für die Standardkultur einer App aus einer Satellitenassembly, wenn das NeutralResourcesLanguageAttribute Attribut einen Wert 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 wie ResourceManager.GetString z. B. oder ResourceManager.GetObject, und nicht ausgelöst wird, 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 Referenzgleichbehandlung unterstützt.

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

Hinweis

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

Konstruktoren

MissingSatelliteAssemblyException()

Initialisiert eine neue Instanz der MissingSatelliteAssemblyException-Klasse mit Standardeigenschaften.

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)

Initialisiert anhand von serialisierten Daten eine neue Instanz der MissingSatelliteAssemblyException-Klasse.

MissingSatelliteAssemblyException(String)

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

MissingSatelliteAssemblyException(String, Exception)

Initialisiert eine neue Instanz der MissingSatelliteAssemblyException-Klasse mit einer angegebenen Fehlermeldung und einem Verweis auf die innere Ausnahme, die diese Ausnahme ausgelöst hat.

MissingSatelliteAssemblyException(String, String)

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

Eigenschaften

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

Ruft einen Link zur Hilfedatei ab, die dieser Ausnahme zugeordnet ist, oder legt einen Link fest.

(Geerbt von Exception)
HResult

Ruft HRESULT ab oder legt HRESULT fest. Dies ist ein codierter Wert, der einer bestimmten Ausnahme zugeordnet ist.

(Geerbt von Exception)
InnerException

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

(Geerbt von Exception)
Message

Ruft eine Meldung ab, mit der die aktuelle Ausnahme beschrieben wird.

(Geerbt von Exception)
Source

Gibt den Namen der Anwendung oder des Objekts zurück, die bzw. das den Fehler verursacht hat, oder legt diesen fest.

(Geerbt von Exception)
StackTrace

Ruft eine Zeichenfolgendarstellung der unmittelbaren Frames in der Aufrufliste ab.

(Geerbt von Exception)
TargetSite

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

(Geerbt von Exception)

Methoden

Equals(Object)

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

(Geerbt von Object)
GetBaseException()

Gibt beim Überschreiben in einer abgeleiteten Klasse eine Exception zurück, die die Grundursache für eine oder mehrere nachfolgende Ausnahmen ist.

(Geerbt von Exception)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetObjectData(SerializationInfo, StreamingContext)

Legt beim Überschreiben in einer abgeleiteten Klasse die SerializationInfo mit Informationen über die Ausnahme fest.

(Geerbt von Exception)
GetType()

Ruft den Laufzeittyp der aktuellen Instanz ab.

(Geerbt von Exception)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

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

(Geerbt von Exception)

Ereignisse

SerializeObjectState
Veraltet.

Tritt auf, wenn eine Ausnahme serialisiert wird, um ein Ausnahmezustandsobjekt mit serialisierten Daten über die Ausnahme zu erstellen.

(Geerbt von Exception)

Gilt für

Siehe auch