MissingSatelliteAssemblyException Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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 csc
e 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) |