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 . Sonuçta ResourceManager sınıfı her GetSatelliteAssemblyiçin yöntemini çağırırCultureInfo.Name.
Ü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üten 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.işlevini çağırın AssemblyLoadContext.Load .
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 biri gerekir:
- Büyük/küçük harfle tam olarak eşleş.
- Küçük harfle.
Olayı yükseltin AssemblyLoadContext.Resolving .
Olayı yükseltin AppDomain.AssemblyResolve .
Bir uydu derlemesi yüklenirse:
- Olay AppDomain.AssemblyLoad oluşturulur.
- Derleme istenen kaynak için arandı. Çalışma zamanı derlemedeki kaynağı bulursa kullanır. Kaynağı bulamazsa aramaya devam eder.
Not
Uydu derlemesinde bir kaynak bulmak için çalışma zamanı geçerli ResourceManageriçin tarafından 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.
Sonraki ResourceManager , her seferinde 2 . 3. adımları yineleyerek birçok olası düzeyde üst kültür derlemelerini arar.
Her kültürün özelliği tarafından CultureInfo.Parent tanımlanan yalnızca bir üst öğesi vardır.
Bir kültürün özelliği olduğunda Parentüst kültür CultureInfo.InvariantCulture araması 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 özelliği için UltimateResourceFallbackLocation.Satellite belirtebilirsinizNeutralResourcesLanguageAttribute.Location. Bu değer, kaynaklar için nihai geri dönüş konumunun ana derleme yerine bir uydu derlemesi olduğunu gösterir.
Not
Varsayılan kültür, nihai geri dönüştür. 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, veya MissingManifestResourceExceptionMissingSatelliteAssemblyException özel durumu oluşturulur.
- Kaynak dosyası bulunursa ancak istenen kaynak mevcut değilse, istek döndürür
null.