Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.
.NET ve UWP uygulamalarında farklı nedenlerle MissingManifestResourceException özel durumu oluşturulur.
.NET uygulamaları
.NET uygulamalarında, nötr kültür için kaynak kümesi belirli bir derlemeden yüklenemediğinden kaynak alma girişimi başarısız olduğunda MissingManifestResourceException oluşturulur. Belirli bir kaynağı almaya çalıştığınızda bir özel durum ortaya çıkar, ancak bu durum, kaynağı bulamama yerine kaynak setinin yüklenememesi nedeniyle meydana gelir.
Uyarı
Daha fazla bilgi için ResourceManager sınıfı konusundaki "MissingManifestResourceException Özel Durumunu İşleme" bölümüne bakabilirsiniz.
Özel durumun ana nedenleri şunlardır:
Kaynak kümesi tam adıyla tanımlanmaz. Örneğin,
baseNameyöntemi çağrısındaki ResourceManager.ResourceManager(String, Assembly) parametresi ad alanı olmayan kaynak kümesinin kök adını belirtiyorsa, ancak derlemesinde depolandığında kaynak kümesine bir ad alanı atanırsa, ResourceManager.GetString yöntemi çağrısı bu özel durumu oluşturur.Varsayılan kültürün kaynaklarını içeren .resources dosyasını yürütülebilir dosyanıza eklediyseniz ve uygulamanız bir MissingManifestResourceExceptionhatasına yol açıyorsa, kaynağın tam nitelikli adını belirlemek için gibi bir yansıma aracı olan IL Ayrıştırıcısı (Ildasm.exe) kullanabilirsiniz. ILDasm'da yürütülebilir dosyanın MANIFEST etiketine çift tıklayarak MANIFEST penceresini açın. Kaynaklar
.mresourceöğesi olarak görünür ve dış derleme başvurularının ve özel derleme düzeyi özniteliklerinin ardından listelenir. Ayrıca, adı komut satırı parametresi olarak geçirilen derlemedeki katıştırılmış kaynakların tam nitelikli adlarını listeleyen aşağıdaki basit yardımcı programı derleyebilirsiniz.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 ModuleKaynak kümesini yalnızca ad alanı ve kök dosya adı yerine kaynak dosya adıyla (isteğe bağlı ad alanıyla birlikte) ve dosya uzantısıyla tanımlarsınız. Örneğin, nötr kültürün kaynak kümesi
GlobalResourcesolarak adlandırıldığında ve sizGlobalResources.resourcesyapıcı işlevininGlobalResourcesparametresinebaseNameyerine ResourceManager.ResourceManager(String, Assembly) değerini sağladığınızda, bu istisna meydana gelir.Yöntem çağrısında tanımlanan kültüre özgü kaynak kümesi bulunamıyor ve geri dönüş kaynak kümesi yüklenemiyor. Örneğin, İngilizce (ABD) ve Rusya (Rusça) kültürleri için uydu derlemeleri oluşturursanız ancak nötr kültür için bir kaynak kümesi sağlamazsanız, uygulamanızın geçerli kültürü İngilizce (Birleşik Krallık) ise bu özel durum oluşur.
MissingManifestResourceException, 0x80131532 değerine sahip HRESULT COR_E_MISSINGMANIFESTRESOURCEkullanır.
MissingManifestResourceException, başvuru eşitliğini destekleyen varsayılan Equals uygulamasını kullanır.
MissingManifestResourceExceptionörneğinin ilk özellik değerlerinin listesi için bkz. MissingManifestResourceException oluşturucuları.
Uyarı
Bir uydu derlemesi kullanılamıyorsa uygulamanız başarısız olmaz diye ana derlemenize nötr bir kaynak kümesi eklemenizi öneririz.
Evrensel Windows Platformu (UWP) uygulamaları
UWP uygulamaları, bağımsız kültür de dahil olmak üzere birden çok kültür için kaynakları tek bir paket kaynak dizini (.pri) dosyasına dağıtır. Sonuç olarak, UWP uygulamasında tercih edilen kültüre yönelik kaynaklar bulunamazsa, MissingManifestResourceException aşağıdaki koşullardan biri altında oluşturulur:
- Uygulama bir .pri dosyası içermiyor veya .pri dosyası açılamadı.
- Uygulamanın .pri dosyası, belirtilen kök ad için bir kaynak kümesi içermiyor.