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.
Uydu derlemeleri, dil ve kültür için özelleştirilmiş yerelleştirilmiş kaynakları depolamak için kullanılır.
Uydu derlemeleri, genel yönetilen derlemelerden farklı bir yükleme algoritması kullanır.
Uydu derlemeleri ne zaman yüklenir?
Yerelleştirilmiş bir kaynak yüklenirken uydu derlemeleri yüklenir.
Yerelleştirilmiş kaynakları yüklemek için temel API sınıfıdır System.Resources.ResourceManager . Son olarak ResourceManager sınıfı, her CultureInfo.Name için GetSatelliteAssembly yöntemini çağırır.
Üst düzey API'ler alt düzey API'yi soyutlar.
Algoritma
.NET Core kaynak geri dönüş işlemi aşağıdaki adımları içerir:
activeAssemblyLoadContext Örneği belirleyin. Her durumda,activeörneği, yürütülen derlemenin AssemblyLoadContext örneğidir.Örnek,
activeistenen kültür için aşağıdaki öncelik sırasına göre bir uydu derlemesi yükler:Önbelleğini denetleyin.
Örnek ise
activeAssemblyLoadContext.Default varsayılan uydu (kaynak) derleme yoklama mantığını çalıştırın.AssemblyLoadContext.Load işlevini çağırın.
Uydu derlemesine karşılık gelen yönetilen derleme bir dosyadan yüklendiyse, istenen CultureInfo.Name ile eşleşen bir alt dizin için yönetilen derlemenin dizinini denetleyin (örneğin,
es-MX).Not
Linux ve macOS'ta alt dizin büyük/küçük harfe duyarlıdır ve aşağıdakilerden birini içermelidir:
- Tam karakter uyumu sağla.
- Küçük harfle yazılmalıdır.
Olayı tetikleyin AssemblyLoadContext.Resolving.
Olayı tetikleyin AppDomain.AssemblyResolve .
Bir uydu derlemesi yüklenirse:
- AppDomain.AssemblyLoad olayı tetiklenir.
- Derleme istenen kaynak için arandı. Çalışma zamanı, derlemedeki kaynağı bulursa, onu kullanır. Kaynağı bulamazsa aramaya devam eder.
Not
Uydu derlemesinde bir kaynak bulmak için çalışma zamanı tarafından geçerli ResourceManager için istenen CultureInfo.Name kaynak dosyasını arar. Kaynak dosyasının içinde istenen kaynak adını arar. Bu kaynaklardan biri bulunamazsa, kaynak bulunamadı olarak değerlendirilir.
ResourceManager daha sonra her seferinde 2. ve 3. adımları yineleyerek birçok olası düzeyde üst kültürel derlemeleri arar.
Her kültür, CultureInfo.Parent özelliği ile tanımlanan yalnızca bir ebeveyne sahiptir.
Üst kültürlerin araması, bir kültürün özelliği Parent olduğunda CultureInfo.InvariantCulture durdurulur.
InvariantCultureiçin 2. ve 3. adımlara geri dönmez, 5. adımla devam ederiz.
Kaynak hala bulunamazsa, ResourceManager varsayılan (geri dönüş) kültürü için kaynağı kullanır.
Genellikle, varsayılan kültür kaynakları ana uygulama derlemesine dahil edilir. Ancak NeutralResourcesLanguageAttribute.Location özelliği için UltimateResourceFallbackLocation.Satellite belirtebilirsiniz. Bu değer, kaynaklar için nihai geri dönüş konumunun ana derleme yerine bir uydu derlemesi olduğunu gösterir.
Not
Varsayılan yerel ayar, nihai yedektir. Bu nedenle, varsayılan kaynak dosyasına her zaman kapsamlı bir kaynak kümesi eklemenizi öneririz. Bu, özel durumların oluşmasını önlemeye yardımcı olur. Kapsamlı bir kümeye sahip olarak, tüm kaynaklar için bir geri dönüş sağlar ve kültürel olarak özel olmasa bile kullanıcı için her zaman en az bir kaynağın mevcut olduğundan emin olursunuz.
Nihayet
- Çalışma zamanı varsayılan (geri dönüş) kültürü için bir kaynak dosyası bulamazsa, MissingManifestResourceException veya MissingSatelliteAssemblyException özel durumu fırlatılır.
- Kaynak dosyası bulunursa ancak istenen kaynak mevcut değilse, istek döndürür
null.