Comparteix a través de


MissingSatelliteAssemblyException Clase

Definición

Excepción que se produce cuando no existe el ensamblado satélite para los recursos de la referencia cultural predeterminada.

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
Herencia
MissingSatelliteAssemblyException
Atributos

Ejemplos

En el ejemplo siguiente se usa el NeutralResourcesLanguageAttribute atributo para indicar que el inglés es la referencia cultural predeterminada de la aplicación y que sus recursos se almacenan en un ensamblado satélite. El propio ejemplo incluye recursos en .txt archivos para las referencias culturales en inglés y francés, como se describe en la tabla siguiente:

culture Nombre/valor del recurso Nombre de archivo
Inglés Greet=Hello Greet.en.txt
Francés Greet=Bonjour Greet.fr.txt

El código fuente siguiente crea una aplicación que cambia primero la referencia cultural de la interfaz de usuario actual a francés (Francia) y, a continuación, a Ruso (Rusia) y muestra un recurso adecuado específico de la referencia cultural en ambos casos.

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

Puede usar el siguiente archivo por lotes para compilar y ejecutar la versión de C# del ejemplo. Si usa Visual Basic, reemplace csc por vbc y la extensión .cs por .vb. Cuando se ejecuta el ejemplo, muestra una cadena de idioma francés pero produce una MissingSatelliteAssemblyException excepción cuando la referencia cultural actual es rusa (Rusia). Esto se debe a que el ensamblado satélite en\HelloWorld.dll que contiene los recursos de la referencia cultural predeterminada no existe.

vbc HelloWorld.vb  

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

HelloWorld  

Puede usar el siguiente archivo por lotes para compilar y ejecutar la versión de Visual Basic del ejemplo. Si usa C#, reemplace por vbccscy reemplace la .vb extensión por .cs. Cuando se ejecuta el ejemplo, muestra una cadena de idioma francés cuando la referencia cultural actual de la interfaz de usuario es francés (Francia). Cuando la referencia cultural de la interfaz de usuario actual es Rusia (ruso), muestra una cadena de idioma inglés porque los recursos de idioma ruso no existen, pero el administrador de recursos puede cargar los recursos de la referencia cultural predeterminada del ensamblado satélite 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  

Comentarios

La referencia cultural predeterminada es la referencia cultural cuyos recursos se cargan si no se encuentran los recursos específicos de la referencia cultural adecuados. De forma predeterminada, los recursos de la referencia cultural predeterminada se encuentran en el ensamblado principal y se produce una MissingManifestResourceException excepción si el administrador de recursos intenta recuperar pero no encuentra un recurso para la referencia cultural predeterminada. Sin embargo, .NET Framework cargará los recursos de la referencia cultural predeterminada de una aplicación desde un ensamblado satélite si el NeutralResourcesLanguageAttribute atributo especifica un valor de UltimateResourceFallbackLocation.Satellite para el parámetro location. Cuando este es el caso, se produce la MissingSatelliteAssemblyException excepción cuando el administrador de recursos intenta recuperar un recurso de la referencia cultural predeterminada y el ensamblado satélite para la referencia cultural especificada en el NeutralResourcesLanguageAttribute atributo falta. Tenga en cuenta que un método de recuperación de recursos produce la excepción, como ResourceManager.GetString o ResourceManager.GetObject, y no cuando se crea una instancia del ResourceManager objeto.

MissingSatelliteAssemblyException usa el COR_E_MISSINGSATELLITEASSEMBLY HRESULT, que tiene el valor 0x80131536.

MissingSatelliteAssemblyException usa la implementación predeterminada Equals , que admite la igualdad de referencias.

Para obtener una lista de los valores de propiedad iniciales de una instancia de la MissingSatelliteAssemblyException clase , vea los MissingSatelliteAssemblyException constructores.

Nota

Siempre debes usar el atributo para definir la NeutralResourcesLanguageAttribute referencia cultural predeterminada de la aplicación para que, si un recurso de una referencia cultural específica no está disponible, la aplicación mostrará un comportamiento aceptable.

Constructores

MissingSatelliteAssemblyException()

Inicializa una nueva instancia de la clase MissingSatelliteAssemblyException con propiedades predeterminadas.

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)
Obsoletos.

Inicializa una nueva instancia de la clase MissingSatelliteAssemblyException a partir de datos serializados.

MissingSatelliteAssemblyException(String)

Inicializa una nueva instancia de la clase MissingSatelliteAssemblyException con el mensaje de error especificado.

MissingSatelliteAssemblyException(String, Exception)

Inicializa una nueva instancia de la clase MissingSatelliteAssemblyException con el mensaje de error especificado y una referencia a la excepción interna que representa la causa de esta excepción.

MissingSatelliteAssemblyException(String, String)

Inicializa una nueva instancia de la clase MissingSatelliteAssemblyException con un mensaje de error especificado y el nombre de una referencia cultural neutra.

Propiedades

CultureName

Obtiene el nombre de la referencia cultural predeterminada.

Data

Obtiene una colección de pares clave/valor que proporciona información definida por el usuario adicional sobre la excepción.

(Heredado de Exception)
HelpLink

Obtiene o establece un vínculo al archivo de ayuda asociado a esta excepción.

(Heredado de Exception)
HResult

Obtiene o establece HRESULT, un valor numérico codificado que se asigna a una excepción específica.

(Heredado de Exception)
InnerException

Obtiene la instancia Exception que produjo la excepción actual.

(Heredado de Exception)
Message

Obtiene un mensaje que describe la excepción actual.

(Heredado de Exception)
Source

Devuelve o establece el nombre de la aplicación o del objeto que generó el error.

(Heredado de Exception)
StackTrace

Obtiene una representación de cadena de los marcos inmediatos en la pila de llamadas.

(Heredado de Exception)
TargetSite

Obtiene el método que produjo la excepción actual.

(Heredado de Exception)

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetBaseException()

Cuando se invalida en una clase derivada, devuelve la clase Exception que representa la causa principal de una o más excepciones posteriores.

(Heredado de Exception)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetObjectData(SerializationInfo, StreamingContext)
Obsoletos.

Cuando se invalida en una clase derivada, establece SerializationInfo con información sobre la excepción.

(Heredado de Exception)
GetType()

Obtiene el tipo de tiempo de ejecución de la instancia actual.

(Heredado de Exception)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Crea y devuelve una representación de cadena de la excepción actual.

(Heredado de Exception)

Eventos

SerializeObjectState
Obsoletos.

Ocurre cuando una excepción se serializa para crear un objeto de estado de excepción que contenga datos serializados sobre la excepción.

(Heredado de Exception)

Se aplica a

Consulte también