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.
Rakitan satelit digunakan untuk menyimpan sumber daya yang dilokalkan yang disesuaikan untuk bahasa dan budaya.
Rakitan satelit menggunakan algoritma pemuatan yang berbeda dari rakitan yang dikelola umum.
Kapan dimuat rakitan satelit?
Rakitan satelit dimuat saat memuat sumber daya yang dilokalkan.
API dasar untuk memuat sumber daya yang dilokalkan adalah System.Resources.ResourceManager kelas . Pada akhirnya, kelas ResourceManager akan memanggil metode GetSatelliteAssembly untuk setiap CultureInfo.Name.
API tingkat yang lebih tinggi dapat mengabstraksi API tingkat rendah.
Algoritma
Proses fallback sumber daya .NET Core melibatkan langkah-langkah berikut:
Tentukan
activeAssemblyLoadContext instance. Dalam semua kasus,activeinstans adalah AssemblyLoadContext assembly yang mengeksekusi.activeInstans memuat rakitan satelit untuk budaya yang diminta dalam urutan prioritas berikut:Periksa cache-nya.
Jika
activeadalah AssemblyLoadContext.Default instans, jalankan logika pemeriksaan satelit (sumber daya) default.Panggil fungsi AssemblyLoadContext.Load.
Jika rakitan terkelola yang sesuai dengan rakitan satelit dimuat dari file, periksa direktori rakitan terkelola untuk subdirektori yang cocok dengan yang diminta CultureInfo.Name (misalnya,
es-MX).Catatan
Di Linux dan macOS, subdirektori bersifat case-sensitive dan harus:
- Kasus yang sama persis.
- Gunakan huruf kecil.
Naikkan AssemblyLoadContext.Resolving acara.
Naikkan AppDomain.AssemblyResolve acara.
Jika rakitan satelit dimuat:
- Acara AppDomain.AssemblyLoad dinaikkan.
- Rakitan sedang dicari untuk menemukan sumber daya yang diminta. Jika runtime menemukan sumber daya di assembly, runtime tersebut akan menggunakannya. Jika tidak menemukan sumber daya, pencarian akan dilanjutkan.
Catatan
Untuk menemukan sumber daya dalam rakitan satelit, runtime mencari file sumber daya yang diminta oleh
untuk terkini. Dalam file sumber daya, file tersebut mencari nama sumber daya yang diminta. Jika keduanya tidak ditemukan, sumber daya diperlakukan sebagai tidak ditemukan. Selanjutnya ResourceManager mencari rakitan budaya induk melalui banyak tingkat potensial, setiap kali mengulangi langkah 2 & 3.
Setiap budaya hanya memiliki satu induk, yang didefinisikan oleh CultureInfo.Parent properti .
Pencarian budaya induk berhenti ketika properti budaya Parent adalah CultureInfo.InvariantCulture.
Untuk
, kami tidak kembali ke langkah 2 & 3, melainkan melanjutkan dengan langkah 5. Jika sumber daya masih belum ditemukan, ResourceManager akan menggunakan sumber daya untuk budaya default (fallback).
Biasanya, sumber daya untuk budaya default disertakan dalam perakitan aplikasi utama. Namun, Anda dapat menentukan UltimateResourceFallbackLocation.Satellite untuk NeutralResourcesLanguageAttribute.Location properti . Nilai ini menunjukkan bahwa lokasi cadangan terakhir untuk sumber daya adalah perakitan satelit daripada perakitan utama.
Catatan
Budaya default adalah fallback utama. Oleh karena itu, kami sarankan Anda selalu menyertakan sekumpulan sumber daya lengkap dalam file sumber daya default. Ini membantu mencegah pengecualian dilemparkan. Dengan memiliki kumpulan yang menyeluruh, Anda menyediakan alternatif untuk semua sumber daya dan memastikan bahwa setidaknya satu sumber daya selalu tersedia bagi pengguna, bahkan jika tidak spesifik secara budaya.
Akhirnya
- Jika runtime tidak menemukan file sumber daya untuk budaya default (fallback), pengecualian MissingManifestResourceException atau MissingSatelliteAssemblyException akan dilemparkan.
- Jika file sumber daya ditemukan tetapi sumber daya yang diminta tidak ada, permintaan mengembalikan
null.