MissingSatelliteAssemblyException Classe

Definição

A exceção gerada quando o assembly satélite para os recursos da cultura padrão está ausente.

public ref class MissingSatelliteAssemblyException : SystemException
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class MissingSatelliteAssemblyException : SystemException
public class MissingSatelliteAssemblyException : SystemException
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type MissingSatelliteAssemblyException = class
    inherit SystemException
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 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 à 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 o 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 em 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 em\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 à cultura apropriados não puderem ser encontrados. Por padrão, os recursos para a cultura padrão estão localizados no assembly principal e são MissingManifestResourceException gerados 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 atributo NeutralResourcesLanguageAttribute especificar um valor de UltimateResourceFallbackLocation.Satellite para o parâmetro de local. 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 recurso, 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.

Note

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

Nome Description
MissingSatelliteAssemblyException()

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

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)

Inicializa uma nova instância da classe de MissingSatelliteAssemblyException dados serializados.

MissingSatelliteAssemblyException(String, Exception)

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

MissingSatelliteAssemblyException(String, String)

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

MissingSatelliteAssemblyException(String)

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

Propriedades

Nome Description
CultureName

Obtém o nome da cultura padrão.

Data

Obtém uma coleção de pares chave/valor que fornecem informações adicionais definidas pelo usuário 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 atribuído a uma exceção específica.

(Herdado de Exception)
InnerException

Obtém a Exception instância 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 do objeto que causa o erro.

(Herdado de Exception)
StackTrace

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

(Herdado de Exception)
TargetSite

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

(Herdado de Exception)

Métodos

Nome Description
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 causa raiz de uma ou mais exceções subsequentes.

(Herdado de Exception)
GetHashCode()

Serve como a função hash predefinida.

(Herdado de Object)
GetObjectData(SerializationInfo, StreamingContext)

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 Objectatual.

(Herdado de Object)
ToString()

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

(Herdado de Exception)

Eventos

Nome Description
SerializeObjectState

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