Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.
Pengecualian MissingManifestResourceException dilemparkan karena alasan yang berbeda di aplikasi .NET versus UWP.
Aplikasi .NET
Di aplikasi .NET, MissingManifestResourceException dilemparkan ketika upaya untuk mengambil kumpulan sumber daya gagal karena kumpulan sumber daya untuk budaya netral tidak dapat dimuat dari suatu assembly tertentu. Meskipun pengecualian dilemparkan ketika Anda mencoba mengambil sumber daya tertentu, itu disebabkan oleh kegagalan untuk memuat kumpulan sumber daya daripada kegagalan menemukan sumber daya.
Nota
Untuk informasi tambahan, lihat bagian "Menangani Pengecualian MissingManifestResourceException" di topik kelas ResourceManager.
Penyebab utama pengecualian termasuk yang berikut:
Kumpulan sumber daya tidak diidentifikasi dengan nama lengkapnya. Misalnya, jika parameter
baseNamedalam panggilan ke metode ResourceManager.ResourceManager(String, Assembly) menentukan nama akar kumpulan sumber daya tanpa namespace, tetapi kumpulan sumber daya diberi namespace ketika disimpan dalam perakitannya, panggilan ke metode ResourceManager.GetString melemparkan pengecualian ini.Jika Anda telah menyematkan file .resources yang berisi sumber daya budaya default di executable dan aplikasi Anda melemparkan MissingManifestResourceException, Anda dapat menggunakan alat pantulan seperti IL Disassembler (Ildasm.exe) untuk menentukan nama sumber daya yang sepenuhnya memenuhi syarat. Di ILDasm, klik dua kali label MANIFEST yang dapat dieksekusi untuk membuka jendela MANIFEST. Sumber daya muncul sebagai item
.mresourcedan dicantumkan setelah referensi rakitan eksternal dan atribut tingkat rakitan khusus. Anda juga dapat mengkompilasi utilitas sederhana berikut, yang mencantumkan nama lengkap sumber daya tersemat dalam assembly yang namanya diteruskan sebagai parameter baris perintah.using System; using System.IO; using System.Reflection; public class Example0 { public static void Main() { if (Environment.GetCommandLineArgs().Length == 1) { Console.WriteLine("No filename."); return; } string filename = Environment.GetCommandLineArgs()[1].Trim(); // Check whether the file exists. if (! File.Exists(filename)) { Console.WriteLine($"{filename} does not exist."); return; } // Try to load the assembly. Assembly assem = Assembly.LoadFrom(filename); Console.WriteLine($"File: {filename}"); // Enumerate the resource files. string[] resNames = assem.GetManifestResourceNames(); if (resNames.Length == 0) Console.WriteLine(" No resources found."); foreach (var resName in resNames) Console.WriteLine($" Resource: {resName.Replace(".resources", "")}"); Console.WriteLine(); } }Imports System.IO Imports System.Reflection Imports System.Resources Module Example3 Public Sub Main() If Environment.GetCommandLineArgs.Length = 1 Then Console.WriteLine("No filename.") Exit Sub End If Dim filename As String = Environment.GetCommandLineArgs(1).Trim() ' Check whether the file exists. If Not File.Exists(filename) Then Console.WriteLine("{0} does not exist.", filename) Exit Sub End If ' Try to load the assembly. Dim assem As Assembly = Assembly.LoadFrom(filename) Console.WriteLine("File: {0}", filename) ' Enumerate the resource files. Dim resNames() As String = assem.GetManifestResourceNames() If resNames.Length = 0 Then Console.WriteLine(" No resources found.") End If For Each resName In resNames Console.WriteLine(" Resource: {0}", resName.Replace(".resources", "")) Next Console.WriteLine() End Sub End ModuleAnda mengidentifikasi himpunan sumber daya dengan nama file sumber dayanya (bersama dengan namespace opsionalnya) dan ekstensi filenya, bukan hanya dengan namespace dan nama file induknya. Misalnya, pengecualian ini dilemparkan jika set sumber daya budaya netral diberi nama
GlobalResourcesdan Anda memberikan nilaiGlobalResources.resources(bukanGlobalResources) ke parameterbaseNamekonstruktor ResourceManager.ResourceManager(String, Assembly).Set sumber daya khusus budaya yang diidentifikasi dalam panggilan metode tidak dapat ditemukan, dan set sumber daya cadangan tidak dapat dimuat. Misalnya, jika Anda membuat rakitan satelit untuk budaya Inggris (Amerika Serikat) dan Rusia (Rusia) tetapi Anda gagal menyediakan set sumber daya untuk budaya netral, pengecualian ini dilemparkan jika budaya aplikasi Anda saat ini adalah Inggris (Inggris).
MissingManifestResourceException menggunakan COR_E_MISSINGMANIFESTRESOURCEHRESULT , yang memiliki nilai 0x80131532.
MissingManifestResourceException menggunakan implementasi Equals default, yang mendukung kesetaraan referensi.
Untuk daftar nilai properti awal untuk instance MissingManifestResourceException, silakan lihat konstruktor MissingManifestResourceException.
Nota
Kami menyarankan agar Anda menyertakan sekumpulan sumber daya netral di assembly utama Anda, sehingga aplikasi Anda tidak akan gagal jika rakitan satelit tidak tersedia.
aplikasi Platform Windows Universal (UWP)
Aplikasi UWP menyebarkan sumber daya untuk beberapa budaya, termasuk budaya netral, dalam satu file indeks sumber daya paket (.pri). Akibatnya, dalam aplikasi UWP, jika sumber daya untuk budaya pilihan tidak dapat ditemukan, MissingManifestResourceException dilemparkan dalam salah satu kondisi berikut:
- Aplikasi tidak menyertakan file .pri, atau file .pri tidak dapat dibuka.
- File .pri aplikasi tidak berisi kumpulan sumber daya untuk nama akar yang diberikan.