MissingSatelliteAssemblyException Classe

Definizione

Eccezione generata in caso di assembly satellite mancante per le risorse di impostazioni cultura predefinite.

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
Ereditarietà
MissingSatelliteAssemblyException
Attributi

Esempio

L'esempio seguente usa l'attributo NeutralResourcesLanguageAttribute per indicare che l'inglese è le impostazioni cultura predefinite dell'app e che le relative risorse vengono archiviate in un assembly satellite. L'esempio stesso include risorse nei file di .txt per le impostazioni cultura inglese e francese, come descritto nella tabella seguente:

Impostazioni cultura Nome/valore della risorsa Nome file
Inglese Greet=Hello Greet.en.txt
Francese Greet=Bonjour Greet.fr.txt

Il codice sorgente seguente compila un'app che modifica prima le impostazioni cultura correnti dell'interfaccia utente in Francese (Francia) e quindi in Russo (Russia) e visualizza una risorsa specifica delle impostazioni cultura appropriata in entrambi i casi.

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

È possibile usare il file batch seguente per compilare ed eseguire la versione C# dell'esempio. Se si usa Visual Basic, sostituire csc con vbc e l'estensione .cs con .vb. Quando viene eseguito l'esempio, viene visualizzata una stringa in lingua francese, ma viene generata un'eccezione MissingSatelliteAssemblyException quando le impostazioni cultura correnti sono russe (Russia). Ciò è dovuto al fatto che l'assembly satellite en\HelloWorld.dll che contiene le risorse delle impostazioni cultura predefinite non esiste.

vbc HelloWorld.vb  

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

HelloWorld  

È possibile usare il file batch seguente per compilare ed eseguire la versione Visual Basic dell'esempio. Se si usa C#, sostituire vbc con csce sostituire l'estensione .vb con .cs. Quando viene eseguito l'esempio, viene visualizzata una stringa di lingua francese quando le impostazioni cultura dell'interfaccia utente correnti sono francese (Francia). Quando le impostazioni cultura dell'interfaccia utente correnti sono Russia (russo), visualizza una stringa di lingua inglese perché le risorse della lingua russa non esistono, ma il gestore risorse è in grado di caricare le risorse delle impostazioni cultura predefinite dall'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  

Commenti

Le impostazioni cultura predefinite sono le impostazioni cultura le cui risorse vengono caricate se non è possibile trovare le risorse appropriate specifiche delle impostazioni cultura. Per impostazione predefinita, le risorse per le impostazioni cultura predefinite si trovano nell'assembly principale e viene generata un'eccezione MissingManifestResourceException se gestione risorse tenta di recuperare ma non riesce a trovare una risorsa per le impostazioni cultura predefinite. Tuttavia, il .NET Framework caricherà le risorse per le impostazioni cultura predefinite di un'app da un assembly satellite se l'attributo NeutralResourcesLanguageAttribute specifica un valore per UltimateResourceFallbackLocation.Satellite il parametro location. In questo caso, l'eccezione MissingSatelliteAssemblyException viene generata quando gestione risorse tenta di recuperare una risorsa delle impostazioni cultura predefinite e l'assembly satellite per le impostazioni cultura specificate nell'attributo NeutralResourcesLanguageAttribute non è presente. Si noti che l'eccezione viene generata da un metodo di recupero delle risorse, ResourceManager.GetString ad esempio o ResourceManager.GetObjecte non quando viene creata un'istanza dell'oggetto ResourceManager .

MissingSatelliteAssemblyException usa il COR_E_MISSINGSATELLITEASSEMBLY HRESULT, che ha il valore 0x80131536.

MissingSatelliteAssemblyException usa l'implementazione predefinita Equals , che supporta l'uguaglianza dei riferimenti.

Per un elenco dei valori iniziali delle proprietà per un'istanza della MissingSatelliteAssemblyException classe , vedere i MissingSatelliteAssemblyException costruttori.

Nota

È sempre consigliabile usare l'attributo per definire le NeutralResourcesLanguageAttribute impostazioni cultura predefinite dell'app in modo che, se una risorsa per impostazioni cultura specifiche non è disponibile, l'applicazione visualizzerà un comportamento accettabile.

Costruttori

MissingSatelliteAssemblyException()

Inizializza una nuova istanza della classe MissingSatelliteAssemblyException con le proprietà predefinite.

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)

Inizializza una nuova istanza della classe MissingSatelliteAssemblyException dai dati serializzati.

MissingSatelliteAssemblyException(String)

Inizializza una nuova istanza della classe MissingSatelliteAssemblyException con il messaggio di errore specificato.

MissingSatelliteAssemblyException(String, Exception)

Inizializza una nuova istanza della classe MissingSatelliteAssemblyException con un messaggio di errore specificato e un riferimento all'eccezione interna che è la causa dell'eccezione corrente.

MissingSatelliteAssemblyException(String, String)

Inizializza una nuova istanza della classe MissingSatelliteAssemblyException con il messaggio di errore e il nome delle impostazioni cultura non associate ad alcun paese specificati.

Proprietà

CultureName

Ottiene il nome delle impostazioni cultura predefinite.

Data

Ottiene una raccolta di coppie chiave/valore che forniscono informazioni definite dall'utente aggiuntive sull'eccezione.

(Ereditato da Exception)
HelpLink

Ottiene o imposta un collegamento al file della Guida associato all'eccezione.

(Ereditato da Exception)
HResult

Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato a un'eccezione specifica.

(Ereditato da Exception)
InnerException

Ottiene l'istanza di Exception che ha causato l'eccezione corrente.

(Ereditato da Exception)
Message

Ottiene un messaggio che descrive l'eccezione corrente.

(Ereditato da Exception)
Source

Ottiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore.

(Ereditato da Exception)
StackTrace

Ottiene una rappresentazione di stringa dei frame immediati nello stack di chiamate.

(Ereditato da Exception)
TargetSite

Ottiene il metodo che genera l'eccezione corrente.

(Ereditato da Exception)

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetBaseException()

Quando ne viene eseguito l'override in una classe derivata, restituisce l'Exception che è la causa radice di una o più eccezioni successive.

(Ereditato da Exception)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetObjectData(SerializationInfo, StreamingContext)

Quando ne viene eseguito l'override in una classe derivata, imposta il controllo SerializationInfo con le informazioni sull'eccezione.

(Ereditato da Exception)
GetType()

Ottiene il tipo di runtime dell'istanza corrente.

(Ereditato da Exception)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Crea e restituisce una rappresentazione di stringa dell'eccezione corrente.

(Ereditato da Exception)

Eventi

SerializeObjectState
Obsoleta.

Si verifica quando un'eccezione viene serializzata per creare un oggetto di stato eccezione contenente i dati serializzati relativi all'eccezione.

(Ereditato da Exception)

Si applica a

Vedi anche