MissingSatelliteAssemblyException Klas

Definitie

De uitzondering die wordt gegenereerd wanneer de satellietassemblage voor de bronnen van de standaardcultuur ontbreekt.

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
Overname
MissingSatelliteAssemblyException
Kenmerken

Voorbeelden

In het volgende voorbeeld wordt het NeutralResourcesLanguageAttribute kenmerk gebruikt om aan te geven dat Engels de standaardcultuur van de app is en dat de bijbehorende resources worden opgeslagen in een satellietassembly. Het voorbeeld zelf bevat resources in .txt bestanden voor de Engelse en Franse culturen, zoals beschreven in de volgende tabel:

Cultuur Resourcenaam/-waarde Bestandsnaam
Engels Begroeting=Hallo Greet.en.txt
Frans Greet=Bonjour Greet.fr.txt

Met de volgende broncode wordt een app gebouwd die de huidige UI-cultuur eerst wijzigt in Frans (Frankrijk) en vervolgens in Russisch (Rusland) en in beide gevallen een geschikte cultuurspecifieke resource weergeeft.

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

U kunt het volgende batchbestand gebruiken om de C#-versie van het voorbeeld te bouwen en uit te voeren. Als u Visual Basic gebruikt, vervangt u csc door vbcen vervangt u de .cs-extensie door .vb. Wanneer het voorbeeld wordt uitgevoerd, wordt er een Franse tekenreeks weergegeven, maar wordt een MissingSatelliteAssemblyException uitzondering gegenereerd wanneer de huidige cultuur Russisch (Rusland) is. Dit komt doordat de satellietassembly en\HelloWorld.dll die de bronnen van de standaardcultuur bevat, niet bestaat.

vbc HelloWorld.vb

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

HelloWorld

U kunt het volgende batchbestand gebruiken om de Visual Basic-versie van het voorbeeld te bouwen en uit te voeren. Als u C# gebruikt, vervangt u vbc door cscen vervangt u de .vb-extensie door .cs. Wanneer het voorbeeld wordt uitgevoerd, wordt er een Franse taaltekenreeks weergegeven wanneer de huidige UI-cultuur Frans (Frankrijk) is. Wanneer de huidige UI-cultuur Rusland (Russisch) is, wordt er een Engelse tekenreeks weergegeven omdat Russische taalbronnen niet bestaan, maar de resourcemanager kan de resources van de standaardcultuur laden vanuit de satellietassembly 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

Opmerkingen

De standaardcultuur is de cultuur waarvan de resources worden geladen als de juiste cultuurspecifieke resources niet kunnen worden gevonden. Resources voor de standaardcultuur bevinden zich standaard in de hoofdassembly en er wordt een MissingManifestResourceException gegenereerd als de resourcemanager probeert op te halen, maar geen resource voor de standaardcultuur kan vinden. Het .NET Framework laadt echter de resources voor de standaardcultuur van een app vanuit een satellietassembly als het kenmerk NeutralResourcesLanguageAttribute een waarde van UltimateResourceFallbackLocation.Satellite voor de locatieparameter opgeeft. Als dit het geval is, wordt de MissingSatelliteAssemblyException uitzondering gegenereerd wanneer de resourcemanager probeert een resource van de standaardcultuur op te halen en de satellietassembly voor de cultuur die is opgegeven in het NeutralResourcesLanguageAttribute kenmerk ontbreekt. Houd er rekening mee dat de uitzondering wordt gegenereerd door een methode voor het ophalen van resources, zoals ResourceManager.GetString of ResourceManager.GetObject, en niet wanneer het ResourceManager object wordt geïnstantieerd.

MissingSatelliteAssemblyException maakt gebruik van de HRESULT-COR_E_MISSINGSATELLITEASSEMBLY, met de waarde 0x80131536.

MissingSatelliteAssemblyException maakt gebruik van de standaard-Equals-implementatie, die ondersteuning biedt voor gelijkheid van verwijzingen.

Zie de MissingSatelliteAssemblyException constructors voor een lijst met initiële eigenschapswaarden voor een exemplaar van de MissingSatelliteAssemblyException klasse.

Note

U moet altijd het kenmerk gebruiken om de NeutralResourcesLanguageAttribute standaardcultuur van uw app te definiëren, zodat als een resource voor een specifieke cultuur niet beschikbaar is, uw toepassing acceptabel gedrag weergeeft.

Constructors

Name Description
MissingSatelliteAssemblyException()

Initialiseert een nieuw exemplaar van de MissingSatelliteAssemblyException klasse met standaardeigenschappen.

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)

Initialiseert een nieuw exemplaar van de MissingSatelliteAssemblyException klasse op basis van geserialiseerde gegevens.

MissingSatelliteAssemblyException(String, Exception)

Initialiseert een nieuw exemplaar van de MissingSatelliteAssemblyException klasse met een opgegeven foutbericht en een verwijzing naar de binnenste uitzondering die de oorzaak van deze uitzondering is.

MissingSatelliteAssemblyException(String, String)

Initialiseert een nieuw exemplaar van de MissingSatelliteAssemblyException klasse met een opgegeven foutbericht en de naam van een neutrale cultuur.

MissingSatelliteAssemblyException(String)

Initialiseert een nieuw exemplaar van de MissingSatelliteAssemblyException klasse met het opgegeven foutbericht.

Eigenschappen

Name Description
CultureName

Hiermee haalt u de naam van de standaardcultuur op.

Data

Hiermee haalt u een verzameling sleutel-waardeparen op die aanvullende door de gebruiker gedefinieerde informatie over de uitzondering bieden.

(Overgenomen van Exception)
HelpLink

Hiermee haalt u een koppeling op naar het Help-bestand dat aan deze uitzondering is gekoppeld.

(Overgenomen van Exception)
HResult

Hiermee wordt HRESULT opgehaald of ingesteld, een gecodeerde numerieke waarde die is toegewezen aan een specifieke uitzondering.

(Overgenomen van Exception)
InnerException

Hiermee haalt u het Exception exemplaar op dat de huidige uitzondering heeft veroorzaakt.

(Overgenomen van Exception)
Message

Hiermee wordt een bericht weergegeven waarin de huidige uitzondering wordt beschreven.

(Overgenomen van Exception)
Source

Hiermee wordt de naam van de toepassing of het object dat de fout veroorzaakt, opgehaald of ingesteld.

(Overgenomen van Exception)
StackTrace

Hiermee haalt u een tekenreeksweergave van de directe frames op de aanroepstack op.

(Overgenomen van Exception)
TargetSite

Hiermee haalt u de methode op waarmee de huidige uitzondering wordt gegenereerd.

(Overgenomen van Exception)

Methoden

Name Description
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetBaseException()

Wanneer deze wordt overschreven in een afgeleide klasse, retourneert u de Exception hoofdoorzaak van een of meer volgende uitzonderingen.

(Overgenomen van Exception)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetObjectData(SerializationInfo, StreamingContext)

Wanneer deze wordt overschreven in een afgeleide klasse, stelt u de SerializationInfo met informatie over de uitzondering in.

(Overgenomen van Exception)
GetType()

Hiermee haalt u het runtimetype van het huidige exemplaar op.

(Overgenomen van Exception)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Hiermee maakt en retourneert u een tekenreeksweergave van de huidige uitzondering.

(Overgenomen van Exception)

gebeurtenis

Name Description
SerializeObjectState

Treedt op wanneer een uitzondering wordt geserialiseerd om een uitzonderingsstatusobject te maken dat geserialiseerde gegevens over de uitzondering bevat.

(Overgenomen van Exception)

Van toepassing op

Zie ook