Aracılığıyla paylaş


Uydu derleme yükleme algoritması

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:

  1. active AssemblyLoadContext Örneği belirleyin. Her durumda, active örneği, yürütülen derlemenin AssemblyLoadContext örneğidir.

  2. Örnek, active istenen kültür için aşağıdaki öncelik sırasına göre bir uydu derlemesi yükler:

  3. 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.

  4. 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.

  5. 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.

  6. Nihayet