Partager via


MissingSatelliteAssemblyException Classe

Définition

Exception levée lorsque l'assembly satellite des ressources de la culture par défaut est absent.

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
Héritage
MissingSatelliteAssemblyException
Attributs

Exemples

L’exemple suivant utilise l’attribut NeutralResourcesLanguageAttribute pour indiquer que l’anglais est la culture par défaut de l’application et que ses ressources sont stockées dans un assembly satellite. L’exemple lui-même inclut des ressources dans .txt fichiers pour les cultures anglaise et Français, comme décrit dans le tableau suivant :

Culture Nom/valeur de la ressource Nom de fichier
Anglais Greet=Hello Greet.en.txt
Français Greet=Bonjour Greet.fr.txt

Le code source suivant génère une application qui modifie d’abord la culture de l’interface utilisateur actuelle en Français (France), puis en russe (Russie) et affiche une ressource appropriée spécifique à la culture dans les deux cas.

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

Vous pouvez utiliser le fichier batch suivant pour générer et exécuter la version C# de l’exemple. Si vous utilisez Visual Basic, remplacez csc par vbc et modifiez l’extension .cs en .vb. Lorsque l’exemple est exécuté, il affiche une chaîne de langue Français, mais lève une MissingSatelliteAssemblyException exception lorsque la culture actuelle est russe (Russie). En effet, l’assembly satellite en\HelloWorld.dll qui contient les ressources de la culture par défaut n’existe pas.

vbc HelloWorld.vb  

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

HelloWorld  

Vous pouvez utiliser le fichier de commandes suivant pour générer et exécuter la version Visual Basic de l’exemple. Si vous utilisez C#, remplacez par vbccscet remplacez l’extension .vb par .cs. Lorsque l’exemple est exécuté, il affiche une chaîne de langue Français lorsque la culture d’interface utilisateur actuelle est Français (France). Lorsque la culture actuelle de l’interface utilisateur est russie (russe), elle affiche une chaîne de langue anglaise, car les ressources en russe n’existent pas, mais le gestionnaire de ressources est en mesure de charger les ressources de la culture par défaut à partir de l’assembly satellite en\HelloWorld2.dll.

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  

Remarques

La culture par défaut est la culture dont les ressources sont chargées si les ressources appropriées spécifiques à la culture sont introuvables. Par défaut, les ressources de la culture par défaut se trouvent dans l’assembly main et un MissingManifestResourceException est levée si le gestionnaire de ressources tente de récupérer mais ne trouve pas de ressource pour la culture par défaut. Toutefois, le .NET Framework charge les ressources de la culture par défaut d’une application à partir d’un assembly satellite si l’attribut NeutralResourcesLanguageAttribute spécifie une valeur de pour le paramètre d’emplacement UltimateResourceFallbackLocation.Satellite . Dans ce cas, l’exception MissingSatelliteAssemblyException est levée lorsque le gestionnaire de ressources tente de récupérer une ressource de la culture par défaut et que l’assembly satellite pour la culture spécifiée dans l’attribut NeutralResourcesLanguageAttribute est manquant. Notez que l’exception est levée par une méthode de récupération de ressources telle que ResourceManager.GetString ou ResourceManager.GetObject, et non lorsque l’objet ResourceManager est instancié.

MissingSatelliteAssemblyException utilise le COR_E_MISSINGSATELLITEASSEMBLY HRESULT, qui a la valeur 0x80131536.

MissingSatelliteAssemblyException utilise l’implémentation par défaut Equals , qui prend en charge l’égalité des références.

Pour obtenir la liste des valeurs de propriété initiales d’un instance de la MissingSatelliteAssemblyException classe, consultez les MissingSatelliteAssemblyException constructeurs.

Notes

Vous devez toujours utiliser l’attribut pour définir la NeutralResourcesLanguageAttribute culture par défaut de votre application afin que si une ressource pour une culture spécifique n’est pas disponible, votre application affiche un comportement acceptable.

Constructeurs

MissingSatelliteAssemblyException()

Initialise une nouvelle instance de la classe MissingSatelliteAssemblyException avec des propriétés par défaut.

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)
Obsolète.

Initialise une nouvelle instance de la classe MissingSatelliteAssemblyException à partir de données sérialisées.

MissingSatelliteAssemblyException(String)

Initialise une nouvelle instance de la classe MissingSatelliteAssemblyException avec le message d'erreur spécifié.

MissingSatelliteAssemblyException(String, Exception)

Initialise une nouvelle instance de la classe MissingSatelliteAssemblyException avec un message d'erreur spécifié et une référence à l'exception interne ayant provoqué cette exception.

MissingSatelliteAssemblyException(String, String)

Initialise une nouvelle instance de la classe MissingSatelliteAssemblyException avec un message d'erreur et le nom d'une culture neutre spécifiés.

Propriétés

CultureName

Obtient le nom de la culture par défaut.

Data

Obtient une collection de paires clé/valeur qui fournissent des informations définies par l'utilisateur supplémentaires sur l'exception.

(Hérité de Exception)
HelpLink

Obtient ou définit un lien vers le fichier d'aide associé à cette exception.

(Hérité de Exception)
HResult

Obtient ou définit HRESULT, valeur numérique codée qui est assignée à une exception spécifique.

(Hérité de Exception)
InnerException

Obtient l'instance Exception qui a provoqué l'exception actuelle.

(Hérité de Exception)
Message

Obtient un message qui décrit l'exception active.

(Hérité de Exception)
Source

Obtient ou définit le nom de l'application ou de l'objet qui est à l'origine de l'erreur.

(Hérité de Exception)
StackTrace

Obtient une représentation sous forme de chaîne des frames immédiats sur la pile des appels.

(Hérité de Exception)
TargetSite

Obtient la méthode qui lève l'exception actuelle.

(Hérité de Exception)

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetBaseException()

En cas de substitution dans une classe dérivée, retourne la Exception qui est à l'origine d'une ou de plusieurs exceptions ultérieures.

(Hérité de Exception)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetObjectData(SerializationInfo, StreamingContext)
Obsolète.

En cas de substitution dans une classe dérivée, définit SerializationInfo avec des informations sur l'exception.

(Hérité de Exception)
GetType()

Obtient le type au moment de l'exécution de l'instance actuelle.

(Hérité de Exception)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Crée et retourne une chaîne représentant l'exception actuelle.

(Hérité de Exception)

Événements

SerializeObjectState
Obsolète.

Se produit quand une exception est sérialisée pour créer un objet d'état d'exception qui contient des données sérialisées concernant l'exception.

(Hérité de Exception)

S’applique à

Voir aussi