Udostępnij za pośrednictwem


MissingSatelliteAssemblyException Klasa

Definicja

Wyjątek zgłaszany, gdy brakuje zestawu satelitarnego dla zasobów kultury domyślnej.

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
Dziedziczenie
MissingSatelliteAssemblyException
Atrybuty

Przykłady

W poniższym przykładzie użyto atrybutu NeutralResourcesLanguageAttribute , aby wskazać, że angielski jest kulturą domyślną aplikacji i że jej zasoby są przechowywane w zestawie satelitarnym. Sam przykład zawiera zasoby w plikach .txt dla kultur angielskich i francuskich, zgodnie z opisem w poniższej tabeli:

Kultura Nazwa/wartość zasobu Nazwa pliku
Angielski Greet=Hello Greet.en.txt
Francuski Greet=Bonjour Greet.fr.txt

Poniższy kod źródłowy tworzy aplikację, która najpierw zmienia bieżącą kulturę interfejsu użytkownika na francuski (Francja), a następnie na Rosyjski (Rosja) i wyświetla odpowiedni zasób specyficzny dla kultury w obu przypadkach.

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

Aby skompilować i wykonać wersję przykładu w języku C#, możesz użyć następującego pliku wsadowego. Jeśli używasz języka Visual Basic, zastąp ciąg , a następnie zastąp cscvbc.cs rozszerzenie ciągiem .vb. Po wykonaniu przykładu wyświetla on ciąg języka francuskiego, ale zgłasza MissingSatelliteAssemblyException wyjątek, gdy bieżąca kultura jest rosyjska (Rosja). Wynika to z tego, że zestaw satelitarny en\HelloWorld.dll, który zawiera zasoby kultury domyślnej, nie istnieje.

vbc HelloWorld.vb  

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

HelloWorld  

Aby skompilować i wykonać wersję przykładu w języku Visual Basic, możesz użyć następującego pliku wsadowego. Jeśli używasz języka C#, zastąp ciąg , a następnie zastąp vbccsc.vb rozszerzenie ciągiem .cs. Po wykonaniu przykładu wyświetla on ciąg języka francuskiego, gdy bieżąca kultura interfejsu użytkownika to Francuski (Francja). Gdy bieżąca kultura interfejsu użytkownika to Rosja (Rosyjski), wyświetla ciąg języka angielskiego, ponieważ nie istnieją zasoby języka rosyjskiego, ale menedżer zasobów może załadować zasoby domyślnej kultury z zestawu satelitarnego 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  

Uwagi

Kultura domyślna to kultura, której zasoby są ładowane, jeśli nie można odnaleźć odpowiednich zasobów specyficznych dla kultury. Domyślnie zasoby dla kultury domyślnej znajdują się w zestawie głównym, a MissingManifestResourceException obiekt jest zgłaszany, jeśli menedżer zasobów próbuje pobrać, ale nie może znaleźć zasobu dla kultury domyślnej. Jednak .NET Framework załaduje zasoby domyślnej kultury aplikacji z zestawu satelitarnego, jeśli NeutralResourcesLanguageAttribute atrybut określa wartość UltimateResourceFallbackLocation.Satellite parametru lokalizacji. W takim przypadku wyjątek jest zgłaszany, MissingSatelliteAssemblyException gdy menedżer zasobów próbuje pobrać zasób kultury domyślnej, a zestaw satelitarny dla kultury określonej w atrybucie NeutralResourcesLanguageAttribute nie istnieje. Należy pamiętać, że wyjątek jest zgłaszany przez metodę pobierania zasobów, taką jak ResourceManager.GetString lub ResourceManager.GetObject, a nie podczas ResourceManager tworzenia wystąpienia obiektu.

MissingSatelliteAssemblyException używa COR_E_MISSINGSATELLITEASSEMBLY HRESULT, która ma wartość 0x80131536.

MissingSatelliteAssemblyException używa domyślnej Equals implementacji, która obsługuje równość odwołań.

Aby uzyskać listę początkowych wartości właściwości dla wystąpienia MissingSatelliteAssemblyException klasy, zobacz MissingSatelliteAssemblyException konstruktory.

Uwaga

Zawsze należy użyć atrybutu NeutralResourcesLanguageAttribute , aby zdefiniować domyślną kulturę aplikacji, aby jeśli zasób dla określonej kultury jest niedostępny, aplikacja wyświetli akceptowalne zachowanie.

Konstruktory

MissingSatelliteAssemblyException()

Inicjuje MissingSatelliteAssemblyException nowe wystąpienie klasy z domyślnymi właściwościami.

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)
Przestarzałe.

Inicjuje MissingSatelliteAssemblyException nowe wystąpienie klasy z serializowanych danych.

MissingSatelliteAssemblyException(String)

Inicjuje MissingSatelliteAssemblyException nowe wystąpienie klasy z określonym komunikatem o błędzie.

MissingSatelliteAssemblyException(String, Exception)

Inicjuje nowe wystąpienie MissingSatelliteAssemblyException klasy z określonym komunikatem o błędzie i odwołaniem do wyjątku wewnętrznego, który jest przyczyną tego wyjątku.

MissingSatelliteAssemblyException(String, String)

Inicjuje nowe wystąpienie MissingSatelliteAssemblyException klasy z określonym komunikatem o błędzie i nazwą kultury neutralnej.

Właściwości

CultureName

Pobiera nazwę kultury domyślnej.

Data

Pobiera kolekcję par klucz/wartość, które zapewniają dodatkowe informacje zdefiniowane przez użytkownika dotyczące wyjątku.

(Odziedziczone po Exception)
HelpLink

Pobiera lub ustawia link do pliku pomocy skojarzonego z tym wyjątkiem.

(Odziedziczone po Exception)
HResult

Pobiera lub ustawia HRESULT, zakodowaną wartość liczbową przypisaną do określonego wyjątku.

(Odziedziczone po Exception)
InnerException

Exception Pobiera wystąpienie, które spowodowało bieżący wyjątek.

(Odziedziczone po Exception)
Message

Pobiera komunikat opisujący bieżący wyjątek.

(Odziedziczone po Exception)
Source

Pobiera lub ustawia nazwę aplikacji lub obiektu, który powoduje błąd.

(Odziedziczone po Exception)
StackTrace

Pobiera reprezentację ciągu natychmiastowych ramek na stosie wywołań.

(Odziedziczone po Exception)
TargetSite

Pobiera metodę, która zgłasza bieżący wyjątek.

(Odziedziczone po Exception)

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetBaseException()

Po przesłonięciu w klasie pochodnej funkcja zwraca Exception główną przyczynę co najmniej jednego kolejnego wyjątku.

(Odziedziczone po Exception)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetObjectData(SerializationInfo, StreamingContext)
Przestarzałe.

Po zastąpieniu w klasie pochodnej ustawia SerializationInfo element z informacjami o wyjątku.

(Odziedziczone po Exception)
GetType()

Pobiera typ środowiska uruchomieniowego bieżącego wystąpienia.

(Odziedziczone po Exception)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Tworzy i zwraca reprezentację ciągu bieżącego wyjątku.

(Odziedziczone po Exception)

Zdarzenia

SerializeObjectState
Przestarzałe.

Występuje, gdy wyjątek jest serializowany w celu utworzenia obiektu stanu wyjątku, który zawiera serializowane dane dotyczące wyjątku.

(Odziedziczone po Exception)

Dotyczy

Zobacz też