Bagikan melalui


MissingSatelliteAssemblyException Kelas

Definisi

Pengecualian yang dilemparkan ketika rakitan satelit untuk sumber daya budaya default hilang.

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
Warisan
MissingSatelliteAssemblyException
Atribut

Contoh

Contoh berikut menggunakan NeutralResourcesLanguageAttribute atribut untuk menunjukkan bahwa bahasa Inggris adalah budaya default aplikasi dan bahwa sumber dayanya disimpan dalam perakitan satelit. Contohnya sendiri mencakup sumber daya dalam file .txt untuk budaya Inggris dan Prancis, seperti yang dijelaskan dalam tabel berikut:

Kultur Nama/nilai sumber daya Nama file
Inggris Greet=Hello Greet.en.txt
Prancis Salam=Bonjour Greet.fr.txt

Kode sumber berikut membangun aplikasi yang mengubah budaya UI saat ini terlebih dahulu menjadi Prancis (Prancis) dan kemudian ke Rusia (Rusia) dan menampilkan sumber daya khusus budaya yang sesuai dalam kedua kasus.

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

Anda dapat menggunakan file batch berikut untuk membangun dan menjalankan contoh versi C#. Jika Anda menggunakan Visual Basic, ganti csc dengan vbc, dan ganti .cs ekstensi dengan .vb. Ketika contoh dijalankan, ia menampilkan string bahasa Prancis tetapi melemparkan MissingSatelliteAssemblyException pengecualian ketika budaya saat ini adalah Rusia (Rusia). Ini karena rakitan satelit en\HelloWorld.dll yang berisi sumber daya budaya default tidak ada.

vbc HelloWorld.vb  

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

HelloWorld  

Anda dapat menggunakan file batch berikut untuk membangun dan menjalankan versi Visual Basic dari contoh. Jika Anda menggunakan C#, ganti vbc dengan csc, dan ganti .vb ekstensi dengan .cs. Ketika contoh dijalankan, ia menampilkan string bahasa Prancis ketika budaya UI saat ini adalah Prancis (Prancis). Ketika budaya UI saat ini adalah Rusia (Rusia), itu menampilkan string bahasa Inggris karena sumber daya bahasa Rusia tidak ada, tetapi manajer sumber daya mampu memuat sumber daya budaya default dari rakitan satelit 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  

Keterangan

Budaya default adalah budaya yang sumber dayanya dimuat jika sumber daya khusus budaya yang sesuai tidak dapat ditemukan. Secara default, sumber daya untuk budaya default terletak di perakitan utama, dan MissingManifestResourceException dilemparkan jika manajer sumber daya mencoba mengambil tetapi tidak dapat menemukan sumber daya untuk budaya default. Namun, .NET Framework akan memuat sumber daya untuk budaya default aplikasi dari rakitan satelit jika NeutralResourcesLanguageAttribute atribut menentukan nilai UltimateResourceFallbackLocation.Satellite untuk parameter lokasi. Ketika ini terjadi, MissingSatelliteAssemblyException pengecualian dilemparkan ketika manajer sumber daya mencoba mengambil sumber daya budaya default dan rakitan satelit untuk budaya yang ditentukan dalam NeutralResourcesLanguageAttribute atribut hilang. Perhatikan bahwa pengecualian dilemparkan oleh metode pengambilan sumber daya seperti ResourceManager.GetString atau ResourceManager.GetObject, dan bukan saat ResourceManager objek dibuat.

MissingSatelliteAssemblyException menggunakan COR_E_MISSINGSATELLITEASSEMBLY HRESULT, yang memiliki nilai 0x80131536.

MissingSatelliteAssemblyException menggunakan implementasi default Equals , yang mendukung kesetaraan referensi.

Untuk daftar nilai properti awal untuk instans MissingSatelliteAssemblyException kelas, lihat MissingSatelliteAssemblyException konstruktor.

Catatan

Anda harus selalu menggunakan NeutralResourcesLanguageAttribute atribut untuk menentukan budaya default aplikasi Anda sehingga jika sumber daya untuk budaya tertentu tidak tersedia, aplikasi Anda akan menampilkan perilaku yang dapat diterima.

Konstruktor

MissingSatelliteAssemblyException()

Menginisialisasi instans MissingSatelliteAssemblyException baru kelas dengan properti default.

MissingSatelliteAssemblyException(SerializationInfo, StreamingContext)
Kedaluwarsa.

Menginisialisasi instans MissingSatelliteAssemblyException baru kelas dari data berseri.

MissingSatelliteAssemblyException(String)

Menginisialisasi instans MissingSatelliteAssemblyException baru kelas dengan pesan kesalahan yang ditentukan.

MissingSatelliteAssemblyException(String, Exception)

Menginisialisasi instans MissingSatelliteAssemblyException baru kelas dengan pesan kesalahan yang ditentukan dan referensi ke pengecualian dalam yang merupakan penyebab pengecualian ini.

MissingSatelliteAssemblyException(String, String)

Menginisialisasi instans MissingSatelliteAssemblyException baru kelas dengan pesan kesalahan yang ditentukan dan nama budaya netral.

Properti

CultureName

Mendapatkan nama budaya default.

Data

Mendapatkan kumpulan pasangan kunci/nilai yang memberikan informasi tambahan yang ditentukan pengguna tentang pengecualian.

(Diperoleh dari Exception)
HelpLink

Mendapatkan atau mengatur tautan ke file bantuan yang terkait dengan pengecualian ini.

(Diperoleh dari Exception)
HResult

Mendapatkan atau menetapkan HRESULT, nilai numerik berkode yang ditetapkan ke pengecualian tertentu.

(Diperoleh dari Exception)
InnerException

Mendapatkan instans Exception yang menyebabkan pengecualian saat ini.

(Diperoleh dari Exception)
Message

Mendapatkan pesan yang menjelaskan pengecualian saat ini.

(Diperoleh dari Exception)
Source

Get dan set nama aplikasi atau objek yang menyebabkan kesalahan.

(Diperoleh dari Exception)
StackTrace

Mendapatkan representasi string dari bingkai langsung pada tumpukan panggilan.

(Diperoleh dari Exception)
TargetSite

Mendapatkan metode yang melemparkan pengecualian saat ini.

(Diperoleh dari Exception)

Metode

Equals(Object)

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
GetBaseException()

Ketika ditimpa di kelas turunan, mengembalikan Exception yang merupakan akar penyebab dari satu atau beberapa pengecualian berikutnya.

(Diperoleh dari Exception)
GetHashCode()

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetObjectData(SerializationInfo, StreamingContext)
Kedaluwarsa.

Saat ditimpa di kelas turunan, mengatur SerializationInfo dengan informasi tentang pengecualian.

(Diperoleh dari Exception)
GetType()

Mendapatkan jenis runtime instans saat ini.

(Diperoleh dari Exception)
MemberwiseClone()

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
ToString()

Membuat dan mengembalikan representasi string dari pengecualian saat ini.

(Diperoleh dari Exception)

Acara

SerializeObjectState
Kedaluwarsa.

Terjadi ketika pengecualian diserialisasikan untuk membuat objek status pengecualian yang berisi data berseri tentang pengecualian.

(Diperoleh dari Exception)

Berlaku untuk

Lihat juga