MissingSatelliteAssemblyException Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Undantaget som utlöses när satellitsammansättningen för resurserna i standardkulturen saknas.
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
- Arv
- Attribut
Exempel
I följande exempel används NeutralResourcesLanguageAttribute attributet för att indikera att engelska är appens standardkultur och att dess resurser lagras i en satellitsammansättning. Själva exemplet innehåller resurser i .txt filer för de engelska och franska kulturerna, enligt beskrivningen i följande tabell:
| Kultur | Resursnamn/värde | Filnamn |
|---|---|---|
| Engelska | Greet=Hello | Greet.en.txt |
| Franska | Greet=Bonjour | Greet.fr.txt |
Följande källkod skapar en app som ändrar den aktuella användargränssnittskulturen först till franska (Frankrike) och sedan till ryska (Ryssland) och visar en lämplig kulturspecifik resurs i båda fallen.
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
Du kan använda följande batchfil för att skapa och köra C#-versionen av exemplet. Om du använder Visual Basic ersätter du csc med vbcoch ersätter .cs-tillägget med .vb. När exemplet körs visar det en fransk språksträng men genererar ett MissingSatelliteAssemblyException undantag när den aktuella kulturen är ryska (Ryssland). Det beror på att satellitsammansättningen en\HelloWorld.dll som innehåller resurserna i standardkulturen inte finns.
vbc HelloWorld.vb
md fr
resgen Greet.fr.txt
al /out:fr\HelloWorld.resources.dll /culture:fr /embed:GreetResources.fr.resources
HelloWorld
Du kan använda följande batchfil för att skapa och köra Visual Basic-versionen av exemplet. Om du använder C# ersätter du vbc med cscoch ersätter .vb-tillägget med .cs. När exemplet körs visas en fransk språksträng när den aktuella användargränssnittskulturen är franska (Frankrike). När den aktuella användargränssnittskulturen är Ryssland (ryska) visar den en engelskspråkig sträng eftersom ryska språkresurser inte finns, men resurshanteraren kan läsa in resurserna för standardkulturen från satellitsammansättningen 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
Kommentarer
Standardkulturen är den kultur vars resurser läses in om det inte går att hitta lämpliga kulturspecifika resurser. Som standard finns resurser för standardkulturen i huvudsammansättningen och en MissingManifestResourceException genereras om resurshanteraren försöker hämta men inte kan hitta en resurs för standardkulturen. Men .NET Framework läser in resurserna för en apps standardkultur från en satellitsammansättning om attributet NeutralResourcesLanguageAttribute anger värdet UltimateResourceFallbackLocation.Satellite för platsparametern. I så fall MissingSatelliteAssemblyException utlöses undantaget när resurshanteraren försöker hämta en resurs i standardkulturen och satellitsammansättningen för den kultur som anges i NeutralResourcesLanguageAttribute attributet saknas. Observera att undantaget genereras av en resurshämtningsmetod, till exempel ResourceManager.GetString eller ResourceManager.GetObject, och inte när ResourceManager objektet instansieras.
MissingSatelliteAssemblyException använder HRESULT-COR_E_MISSINGSATELLITEASSEMBLY, som har värdet 0x80131536.
MissingSatelliteAssemblyException använder standardimplementeringen Equals, som stöder referensjämlikhet.
En lista över inledande egenskapsvärden för en instans av MissingSatelliteAssemblyException klassen finns i MissingSatelliteAssemblyException konstruktorerna.
Note
Du bör alltid använda NeutralResourcesLanguageAttribute attributet för att definiera appens standardkultur så att om en resurs för en viss kultur inte är tillgänglig visas ett acceptabelt beteende i programmet.
Konstruktorer
| Name | Description |
|---|---|
| MissingSatelliteAssemblyException() |
Initierar en ny instans av MissingSatelliteAssemblyException klassen med standardegenskaper. |
| MissingSatelliteAssemblyException(SerializationInfo, StreamingContext) |
Initierar en ny instans av MissingSatelliteAssemblyException klassen från serialiserade data. |
| MissingSatelliteAssemblyException(String, Exception) |
Initierar en ny instans av MissingSatelliteAssemblyException klassen med ett angivet felmeddelande och en referens till det inre undantaget som är orsaken till det här undantaget. |
| MissingSatelliteAssemblyException(String, String) |
Initierar en ny instans av MissingSatelliteAssemblyException klassen med ett angivet felmeddelande och namnet på en neutral kultur. |
| MissingSatelliteAssemblyException(String) |
Initierar en ny instans av MissingSatelliteAssemblyException klassen med det angivna felmeddelandet. |
Egenskaper
| Name | Description |
|---|---|
| CultureName |
Hämtar namnet på standardkulturen. |
| Data |
Hämtar en samling nyckel/värde-par som ger ytterligare användardefinierad information om undantaget. (Ärvd från Exception) |
| HelpLink |
Hämtar eller anger en länk till hjälpfilen som är associerad med det här undantaget. (Ärvd från Exception) |
| HResult |
Hämtar eller anger HRESULT, ett kodat numeriskt värde som har tilldelats ett specifikt undantag. (Ärvd från Exception) |
| InnerException |
Hämtar den Exception instans som orsakade det aktuella undantaget. (Ärvd från Exception) |
| Message |
Hämtar ett meddelande som beskriver det aktuella undantaget. (Ärvd från Exception) |
| Source |
Hämtar eller anger namnet på programmet eller objektet som orsakar felet. (Ärvd från Exception) |
| StackTrace |
Hämtar en strängrepresentation av de omedelbara ramarna i anropsstacken. (Ärvd från Exception) |
| TargetSite |
Hämtar den metod som utlöser det aktuella undantaget. (Ärvd från Exception) |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetBaseException() |
När den åsidosätts i en härledd klass returnerar den Exception som är rotorsaken till ett eller flera efterföljande undantag. (Ärvd från Exception) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
När åsidosättas i en härledd klass anger du SerializationInfo med information om undantaget. (Ärvd från Exception) |
| GetType() |
Hämtar körningstypen för den aktuella instansen. (Ärvd från Exception) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Skapar och returnerar en strängrepresentation av det aktuella undantaget. (Ärvd från Exception) |
Händelser
| Name | Description |
|---|---|
| SerializeObjectState |
Inträffar när ett undantag serialiseras för att skapa ett undantagstillståndsobjekt som innehåller serialiserade data om undantaget. (Ärvd från Exception) |