Compartilhar via


MissingSatelliteAssemblyException Classe

Definição

A exceção que é lançada quando o assembly satélite dos recursos da cultura padrão está ausente.

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
Herança
MissingSatelliteAssemblyException
Atributos

Exemplos

O exemplo a seguir usa o NeutralResourcesLanguageAttribute atributo para indicar que o inglês é a cultura padrão do aplicativo e que seus recursos são armazenados em um assembly satélite. O exemplo em si inclui recursos em arquivos .txt para as culturas em inglês e francês, conforme descrito na tabela a seguir:

Cultura Nome/valor do recurso Nome do arquivo
Inglês Greet=Hello Greet.en.txt
Francês Greet=Bonjour Greet.fr.txt

O código-fonte a seguir cria um aplicativo que altera a cultura atual da interface do usuário primeiro para francês (França) e depois para russo (Rússia) e exibe um recurso específico da cultura apropriado em ambos os 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

Você pode usar o arquivo em lote a seguir para compilar e executar a versão C# do exemplo. Se você estiver usando Visual Basic, substitua csc por vbc e substitua a extensão .cs por .vb. Quando o exemplo é executado, ele exibe uma cadeia de caracteres de idioma francês, mas gera uma MissingSatelliteAssemblyException exceção quando a cultura atual é russa (Rússia). Isso ocorre porque o assembly satélite en\HelloWorld.dll que contém os recursos da cultura padrão não existe.

vbc HelloWorld.vb  

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

HelloWorld  

Você pode usar o arquivo em lote a seguir para compilar e executar a versão do Visual Basic do exemplo. Se você estiver usando C#, substitua vbc por csce substitua a .vb extensão por .cs. Quando o exemplo é executado, ele exibe uma cadeia de caracteres de idioma francês quando a cultura atual da interface do usuário é francês (França). Quando a cultura atual da interface do usuário é Rússia (russo), ela exibe uma cadeia de caracteres de idioma inglês porque os recursos de idioma russo não existem, mas o gerenciador de recursos é capaz de carregar os recursos da cultura padrão do assembly 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  

Comentários

A cultura padrão é a cultura cujos recursos são carregados se os recursos específicos da cultura apropriados não puderem ser encontrados. Por padrão, os recursos para a cultura padrão estão localizados no assembly main e um MissingManifestResourceException é gerado se o gerenciador de recursos tenta recuperar, mas não consegue encontrar um recurso para a cultura padrão. No entanto, o .NET Framework carregará os recursos para a cultura padrão de um aplicativo de um assembly satélite se o NeutralResourcesLanguageAttribute atributo especificar um valor de UltimateResourceFallbackLocation.Satellite para o parâmetro de localização. Quando esse é o caso, a MissingSatelliteAssemblyException exceção é gerada quando o gerenciador de recursos tenta recuperar um recurso da cultura padrão e o assembly satélite para a cultura especificada no NeutralResourcesLanguageAttribute atributo está ausente. Observe que a exceção é gerada por um método de recuperação de recursos, como ResourceManager.GetString ou ResourceManager.GetObject, e não quando o ResourceManager objeto é instanciado.

MissingSatelliteAssemblyException usa o COR_E_MISSINGSATELLITEASSEMBLY HRESULT, que tem o valor 0x80131536.

MissingSatelliteAssemblyException usa a implementação padrão Equals , que dá suporte à igualdade de referência.

Para obter uma lista de valores de propriedade iniciais para uma instância da MissingSatelliteAssemblyException classe , consulte os MissingSatelliteAssemblyException construtores.

Observação

Você sempre deve usar o NeutralResourcesLanguageAttribute atributo para definir a cultura padrão do aplicativo para que, se um recurso para uma cultura específica não estiver disponível, seu aplicativo exibirá um comportamento aceitável.

Construtores

MissingSatelliteAssemblyException()

Inicializa uma nova instância da classe MissingSatelliteAssemblyException com propriedades padrão.

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)
Obsoleto.

Inicializa uma nova instância da classe MissingSatelliteAssemblyException com base nos dados serializados.

MissingSatelliteAssemblyException(String)

Inicializa uma nova instância da classe MissingSatelliteAssemblyException com a mensagem de erro especificada.

MissingSatelliteAssemblyException(String, Exception)

Inicializa uma nova instância da classe MissingSatelliteAssemblyException com uma mensagem de erro especificada e uma referência à exceção interna que é a causa da exceção.

MissingSatelliteAssemblyException(String, String)

Inicializa uma nova instância da classe MissingSatelliteAssemblyException com uma mensagem de erro especificada e o nome de uma cultura neutra.

Propriedades

CultureName

Obtém o nome da cultura padrão.

Data

Obtém uma coleção de pares de chave/valor que fornecem informações definidas pelo usuário adicionais sobre a exceção.

(Herdado de Exception)
HelpLink

Obtém ou define um link para o arquivo de ajuda associado a essa exceção.

(Herdado de Exception)
HResult

Obtém ou define HRESULT, um valor numérico codificado que é atribuído a uma exceção específica.

(Herdado de Exception)
InnerException

Obtém a instância Exception que causou a exceção atual.

(Herdado de Exception)
Message

Obtém uma mensagem que descreve a exceção atual.

(Herdado de Exception)
Source

Obtém ou define o nome do aplicativo ou objeto que causa o erro.

(Herdado de Exception)
StackTrace

Obtém uma representação de cadeia de caracteres de quadros imediatos na pilha de chamadas.

(Herdado de Exception)
TargetSite

Obtém o método que gerou a exceção atual.

(Herdado de Exception)

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetBaseException()

Quando substituído em uma classe derivada, retorna a Exception que é a causa raiz de uma ou mais exceções subsequentes.

(Herdado de Exception)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetObjectData(SerializationInfo, StreamingContext)
Obsoleto.

Quando substituído em uma classe derivada, define o SerializationInfo com informações sobre a exceção.

(Herdado de Exception)
GetType()

Obtém o tipo de runtime da instância atual.

(Herdado de Exception)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Cria e retorna uma representação de cadeia de caracteres da exceção atual.

(Herdado de Exception)

Eventos

SerializeObjectState
Obsoleto.

Ocorre quando uma exceção é serializada para criar um objeto de estado de exceção que contém dados serializados sobre a exceção.

(Herdado de Exception)

Aplica-se a

Confira também