MissingSatelliteAssemblyException Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
- 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) |