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 język angielski jest domyślną kulturą 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 Witaj=Witaj Greet.en.txt
Francuski Witaj=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

Poniższy plik wsadowy służy do kompilowania i wykonywania wersji języka C# w tym przykładzie. Jeśli używasz Visual Basic, zastąp ciąg csc , a następnie zastąp vbc``.cs rozszerzenie ciągiem .vb. Po wykonaniu przykładu zostanie wyświetlony ciąg języka francuskiego, ale zgłasza MissingSatelliteAssemblyException wyjątek, gdy bieżąca kultura jest rosyjska (Rosja). Dzieje się tak, ponieważ 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  

Poniższy plik wsadowy umożliwia skompilowanie i wykonanie Visual Basic wersji przykładu. Jeśli używasz języka C#, zastąp ciąg vbc , a następnie zastąp csc``.vb rozszerzenie ciągiem .cs. Po wykonaniu przykładu zostanie wyświetlony ciąg języka francuskiego, gdy bieżąca kultura interfejsu użytkownika jest francuska (Francja). Gdy bieżąca kultura interfejsu użytkownika to Rosja (Rosja), wyświetla ciąg języka angielskiego, ponieważ zasoby języka rosyjskiego nie istnieją, 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

Domyślna kultura 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 głównym zestawie i MissingManifestResourceException 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 i brakuje zestawu satelitarnego dla kultury określonej w atrybucie NeutralResourcesLanguageAttribute . Należy pamiętać, że wyjątek jest zgłaszany przez metodę pobierania zasobów, taką jak ResourceManager.GetString lub ResourceManager.GetObject, a nie w przypadku ResourceManager wystąpienia obiektu.

MissingSatelliteAssemblyException używa COR_E_MISSINGSATELLITEASSEMBLY HRESULT, który 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 do zdefiniowania domyślnej kultury aplikacji, aby jeśli zasób dla określonej kultury jest niedostępny, aplikacja będzie wyświetlać akceptowalne zachowanie.

Konstruktory

MissingSatelliteAssemblyException()

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

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)

Inicjuje MissingSatelliteAssemblyException nowe wystąpienie klasy z serializacji 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 wewnętrznego wyjątku, który jest przyczyną tego wyjątku.

MissingSatelliteAssemblyException(String, String)

Inicjuje MissingSatelliteAssemblyException nowe wystąpienie 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 w 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)

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

Występuje, gdy wyjątek jest serializowany w celu utworzenia obiektu stanu wyjątku zawierającego serializowane dane o wyjątku.

(Odziedziczone po Exception)

Dotyczy

Zobacz też