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.
Ketika MSBuild mengkompilasi proyek .NET Core, file sumber daya XML, yang memiliki ekstensi file .resx , dikonversi menjadi file .resources biner. File biner disematkan ke dalam output pengkompilasi dan dapat dibaca oleh ResourceManager. Artikel ini menjelaskan bagaimana MSBuild memilih nama untuk setiap file .resources .
Petunjuk / Saran
Jika Anda secara eksplisit menambahkan item sumber daya ke file proyek Anda, dan itu juga termasuk dalam pola penyertaan default untuk .NET Core, Anda akan mendapatkan kesalahan build. Untuk menyertakan file sumber daya secara manual sebagai EmbeddedResource item, atur properti EnableDefaultEmbeddedResourceItems ke false.
Nama default
Di .NET Core 3.0 dan yang lebih baru, nama default untuk manifes sumber daya digunakan saat kedua kondisi berikut terpenuhi:
- File sumber daya tidak secara eksplisit disertakan dalam file proyek sebagai
EmbeddedResourceitem denganLogicalName, ,ManifestResourceNameatauDependentUponmetadata. - Properti
EmbeddedResourceUseDependentUponConventiontidak diatur kefalsedalam file proyek. Secara default, properti ini diatur ketrue. Untuk informasi selengkapnya, lihat EmbeddedResourceUseDependentUponConvention.
Jika file aset ditempatkan bersama dengan file sumber (.cs atau .vb) yang memiliki nama file dasar yang sama, nama lengkap tipe pertama yang didefinisikan dalam file sumber digunakan untuk nama file manifes. Misalnya, jika MyNamespace.Form1 adalah jenis pertama yang ditentukan dalam Form1.cs, dan Form1.cs dikolokasikan dengan Form1.resx, nama manifes yang dihasilkan untuk file sumber daya tersebut adalah MyNamespace.Form1.resources.
LogicalName Metadata
Jika file sumber daya secara eksplisit disertakan dalam file proyek sebagai EmbeddedResource item dengan LogicalName metadata, LogicalName nilai tersebut digunakan sebagai nama manifes.
LogicalName lebih diutamakan daripada metadata atau pengaturan lainnya.
Misalnya, nama manifes untuk file sumber daya yang ditentukan dalam cuplikan file proyek berikut adalah SomeName.resources.
<EmbeddedResource Include="X.resx" LogicalName="SomeName.resources" />
-atau-
<EmbeddedResource Include="X.fr-FR.resx" LogicalName="SomeName.resources" />
Nota
Jika
LogicalNametidak ditentukan,EmbeddedResourcedengan dua titik (.) dalam nama file tidak berfungsi, yang berarti tidakGetManifestResourceNamesmengembalikan file tersebut.Contoh berikut berfungsi dengan benar:
<EmbeddedResource Include="X.resx" />Contoh berikut tidak berfungsi:
<EmbeddedResource Include="X.fr-FR.resx" />
Metadata ManifestResourceName
Jika file sumber daya secara eksplisit disertakan dalam file proyek sebagai item EmbeddedResource dengan metadata ManifestResourceName (dan LogicalName tidak ada), nilai ManifestResourceName, dikombinasikan dengan ekstensi file .resources, digunakan sebagai nama file manifes.
Misalnya, nama manifes untuk file sumber daya yang ditentukan dalam cuplikan file proyek berikut adalah SomeName.resources.
<EmbeddedResource Include="X.resx" ManifestResourceName="SomeName" />
Nama manifes untuk file sumber daya yang ditentukan dalam cuplikan file proyek berikut adalah SomeName.fr-FR.resources.
<EmbeddedResource Include="X.fr-FR.resx" ManifestResourceName="SomeName.fr-FR" />
Metadata Tergantung Pada
Jika file sumber daya secara eksplisit disertakan dalam file proyek sebagai EmbeddedResource item dengan DependentUpon metadata (dan LogicalName dan ManifestResourceName tidak ada), informasi dari file sumber yang ditentukan oleh DependentUpon digunakan untuk nama file manifes sumber daya. Secara khusus, nama jenis pertama yang ditentukan dalam file sumber digunakan dalam nama manifes sebagai berikut: Namespace.Classname[. Budaya].sumber daya.
Misalnya, nama manifes untuk file sumber daya yang ditentukan dalam cuplikan file proyek berikut adalah Namespace.Classname.resources (di mana Namespace.Classname adalah kelas pertama yang ditentukan dalam MyTypes.cs).
<EmbeddedResource Include="X.resx" DependentUpon="MyTypes.cs">
Nama manifes untuk file sumber daya yang ditentukan dalam cuplikan file proyek berikut adalah Namespace.Classname.fr-FR.resources (di mana Namespace.Classname adalah kelas pertama yang ditentukan dalam MyTypes.cs).
<EmbeddedResource Include="X.fr-FR.resx" DependentUpon="MyTypes.cs">
Properti Penggunaan Sumber Daya Tertanam Berdasarkan Konvensi
Jika EmbeddedResourceUseDependentUponConvention disetel ke false dalam file proyek, setiap nama file manifes sumber daya dibangun berdasarkan namespace akar untuk proyek dan jalur relatif dari akar proyek ke file .resx. Lebih spesifik lagi, nama file manifes sumber daya yang dihasilkan adalah RootNamespace.RelativePathWithDotsForSlashes.[Culture.]resources. Ini juga merupakan logika yang digunakan untuk menghasilkan nama manifes dalam versi .NET Core sebelum 3.0.
Nota
- Jika
RootNamespacetidak ditentukan, defaultnya adalah nama proyek. - Jika
LogicalName,ManifestResourceName, atauDependentUponmetadata ditentukan di file proyek untuk itemEmbeddedResource, aturan penamaan ini tidak berlaku untuk file sumber daya tersebut.