Tugas GenerateResource
Mengonversi antara .txt
dan .resx
(format sumber daya berbasis XML) dan file biner .resources
runtime bahasa umum yang dapat disematkan dalam runtime biner yang dapat dieksekusi atau dikompilasi ke dalam rakitan satelit. Tugas ini biasanya digunakan untuk mengonversi .txt
file atau .resx
ke .resources
file. Tugas GenerateResource
ini secara fungsional mirip dengan resgen.exe.
Perhatian
Sumber daya dalam file dapat diserialisasikan .resx
menggunakan BinaryFormatter
, yang tidak aman. Sertakan hanya file tersebut .resx
dalam proses build yang Anda percayai.
Parameter
Tabel berikut ini menjelaskan parameter tugas GenerateResource
.
Parameter | Deskripsi |
---|---|
AdditionalInputs |
Parameter ITaskItem[] opsional.Berisi input tambahan untuk pemeriksaan dependensi yang dilakukan oleh tugas ini. Misalnya, file proyek dan target biasanya harus berupa input, sehingga jika diperbarui, semua sumber daya diregenerasi. |
EnvironmentVariables |
Parameter String[] opsional.Menentukan array pasangan nilai nama variabel lingkungan yang harus diteruskan ke resgen.exeyang ditelurkan, selain (atau secara selektif menimpa) blok lingkungan reguler. |
ExcludedInputPaths |
Parameter ITaskItem[] opsional.Menentukan array item yang menentukan jalur dari mana input terlacak akan diabaikan selama pemeriksaan Terbaru. |
ExecuteAsTool |
Parameter Boolean opsional.Jika true , berjalan tlbimp.exe dan aximp.exe dari kerangka kerja target yang sesuai di luar proc untuk menghasilkan rakitan pembungkus yang diperlukan. Parameter ini memungkinkan multi-penargetan ResolveComReferences . |
FilesWritten |
Parameter output ITaskItem[] opsional.Berisi nama semua file yang ditulis ke disk. Ini termasuk file cache, jika ada. Parameter ini berguna untuk implementasi Clean. |
MinimalRebuildFromTracking |
Parameter Boolean opsional.Mendapatkan atau mengatur sakelar yang menentukan apakah build inkremental yang dilacak akan digunakan. Jika true , build inkremental diaktifkan; jika tidak, pembangunan ulang akan dipaksa. |
NeverLockTypeAssemblies |
Parameter Boolean opsional.Mendapatkan atau menetapkan nilai Boolean yang menentukan apakah akan membuat AppDomain baru untuk mengevaluasi file sumber daya (.resx) (true) atau membuat AppDomain baru hanya saat file sumber daya mereferensikan rakitan pengguna (false). |
OutputResources |
Parameter output ITaskItem[] opsional.Menentukan nama file yang dihasilkan, seperti .resources file. Jika Anda tidak menentukan nama, nama file input yang cocok digunakan dan .resources file yang dibuat ditempatkan di direktori yang berisi file input. |
PublicClass |
Parameter Boolean opsional.Jika true , membuat kelas sumber daya yang ditik dengan kuat sebagai kelas publik. |
References |
Parameter String[] opsional.Referensi untuk memuat jenis dalam .resx file dari. .resx elemen data file mungkin memiliki jenis .NET. Ketika file .resx dibaca, jenis ini harus diselesaikan. Biasanya, ini berhasil diselesaikan dengan menggunakan aturan pemuatan jenis standar. Jika Anda memberikan assembly di References , mereka diutamakan.Parameter ini tidak diperlukan untuk sumber daya yang ditik dengan kuat. |
SdkToolsPath |
Parameter String opsional.Menentukan jalur ke alat SDK, seperti resgen.exe. |
Sources |
Parameter ITaskItem[] wajib.Menentukan item yang akan dikonversi. Item yang diteruskan ke parameter ini harus memiliki salah satu ekstensi file berikut: - .txt : Menentukan ekstensi untuk file teks yang akan dikonversi. File teks hanya dapat berisi sumber daya string.- .resx: Menentukan ekstensi untuk file sumber daya berbasis XML yang akan dikonversi. - .restext: Menentukan format yang sama dengan .txt. Ekstensi yang berbeda ini berguna jika Anda ingin membedakan file sumber dengan jelas yang berisi sumber daya dari file sumber lain dalam proses build Anda. - .sumber daya: Menentukan ekstensi untuk file sumber daya yang akan dikonversi. |
StateFile |
Parameter ITaskItem opsional. Menentukan jalur ke file cache opsional yang digunakan untuk mempercepat pemeriksaan dependensi tautan dalam file input .resx. |
StronglyTypedClassName |
Parameter String opsional.Menentukan nama kelas untuk kelas sumber daya yang ditik dengan kuat. Jika parameter ini tidak ditentukan, nama dasar file sumber daya digunakan. |
StronglyTypedFilename |
Parameter ITaskItem opsional. Menentukan nama file untuk file sumber. Jika parameter ini tidak ditentukan, nama kelas digunakan sebagai nama file dasar, dengan ekstensi tergantung pada bahasa. Misalnya: MyClass.cs. |
StronglyTypedLanguage |
Parameter String opsional.Menentukan bahasa yang akan digunakan saat menghasilkan sumber kelas untuk sumber daya yang ditik dengan kuat. Parameter ini harus sama persis dengan salah satu bahasa yang digunakan oleh CodeDomProvider. Sebagai contoh: VB atau C# .Dengan meneruskan nilai ke parameter ini, Anda menginstruksikan tugas untuk menghasilkan sumber daya yang sangat di ketik. |
StronglyTypedManifestPrefix |
Parameter String opsional.Menentukan namespace sumber daya atau awalan manifes yang akan digunakan di sumber kelas yang dihasilkan untuk sumber daya yang diketik dengan kuat. |
StronglyTypedNamespace |
Parameter String opsional.Menentukan namespace yang akan digunakan untuk sumber kelas yang dihasilkan untuk sumber daya yang di ketik dengan kuat. Jika parameter ini tidak ditentukan, sumber daya yang sangat di ketik berada di namespace global. |
TLogReadFiles |
Opsional ITaskItem[] parameter bersifat hanya-baca.Mendapatkan array item yang mewakili log pelacakan baca. |
TLogWriteFiles |
Opsional ITaskItem[] parameter bersifat hanya-baca.Mendapatkan array item yang mewakili log pelacakan baca. |
ToolArchitecture |
Parameter System.String opsional. Digunakan untuk menentukan apakah Tracker.exe perlu digunakan untuk menelurkan ResGen.exe. Harus dapat diurai ExecutableType untuk anggota enumerasi. Jika String.Empty , menggunakan heuristik untuk menentukan arsitektur default. Harus dapat diurai ke anggota enumerasi Microsoft.Build.Utilities.ExecutableType. |
TrackerFrameworkPath |
Parameter String opsional.Menentukan jalur ke lokasi .NET Framework yang sesuai yang berisi FileTracker.dll. Jika diatur, pengguna bertanggung jawab untuk memastikan bahwa bitness FileTracker.dll bahwa mereka lulus cocok dengan bitness ResGen.exe yang ingin mereka gunakan. Jika tidak diatur, tugas memutuskan lokasi yang sesuai berdasarkan versi .NET Framework saat ini. |
TrackerLogDirectory |
Parameter String opsional.Menentukan direktori perantara tempat log pelacakan menjalankan tugas ini akan ditempatkan. |
TrackerSdkPath |
Parameter String opsional.Menentukan jalur ke lokasi SDK Windows yang sesuai yang berisi Tracker.exe. Jika diatur, pengguna bertanggung jawab untuk memastikan bahwa bitness FileTracker.dll bahwa mereka lulus cocok dengan bitness ResGen.exe yang ingin mereka gunakan. Jika tidak diatur, tugas memutuskan lokasi yang sesuai berdasarkan versi .NET Framework saat ini. |
TrackFileAccess |
Parameter Boolean opsional. Jika true, direktori file input digunakan untuk menyelesaikan jalur file relatif. |
UsePreserializedResources |
Parameter Boolean opsional.Jika true , menentukan bahwa sumber daya non-String akan diserialisasikan menggunakan PreserializedResourceWriter alih-alih ResourceWriter, yang tidak didukung pada .NET Core atau .NET 5 atau yang lebih baru. |
UseSourcePath |
Parameter Boolean opsional.Jika true , menentukan bahwa direktori file input akan digunakan untuk menyelesaikan jalur file relatif. |
Keterangan
Karena .resx
file mungkin berisi tautan ke file sumber daya lain, tidak cukup untuk hanya membandingkan .resx
dan .resources
tanda waktu file untuk melihat apakah output sudah diperbarui. Sebaliknya, GenerateResource
tugas mengikuti tautan dalam .resx
file dan memeriksa tanda waktu file yang ditautkan juga. Ini berarti bahwa Anda umumnya tidak boleh menggunakan atribut Inputs
dan Outputs
pada target yang berisi GenerateResource
tugas, karena ini dapat menyebabkannya dilewati ketika seharusnya benar-benar berjalan.
Selain parameter yang tercantum di atas, tugas ini mewarisi parameter dari kelas TaskExtension, yang mewarisi sendiri dari kelas Task. Untuk daftar parameter tambahan ini dan deskripsinya, lihat kelas dasar TaskExtension.
Saat menggunakan MSBuild 4.0 untuk menargetkan proyek .NET 3.5, build mungkin gagal pada sumber daya x86. Untuk mengatasi masalah ini, Anda dapat membangun target sebagai rakitan AnyCPU.
Parameter UsePreserializedResources
mendapatkan nilainya dari properti $(GenerateResourceUsePreserializedResources)
dalam proses build .NET normal. Properti ini diatur ke true
secara default dalam proyek dan proyek .NET Core yang menggunakan .NET 5 atau yang lebih baru. Anda dapat mengatur $(GenerateResourceUsePreserializedResources)
ke true
untuk mengizinkan .NET SDK membangun proyek yang menargetkan .NET Framework 4.6.1 atau yang lebih baru yang menggunakan sumber daya non-string. Rakitan System.Resources.Extensions
harus tersedia di runtime bahasa umum. Ini tersedia di .NET Core 3.0 dan yang lebih baru dan .NET 5 dan yang lebih baru, dan dapat digunakan di .NET Framework 4.6.1 atau yang lebih baru melalui PackageReference.|
Contoh
Contoh berikut menggunakan GenerateResource
tugas untuk menghasilkan .resources
file dari file yang ditentukan oleh Resx
koleksi item.
<GenerateResource
Sources="@(Resx)"
OutputResources="@(Resx->'$(IntermediateOutputPath)%(Identity).resources')">
<Output
TaskParameter="OutputResources"
ItemName="Resources"/>
</GenerateResource>
Tugas menggunakan GenerateResource
<LogicalName>
metadata <EmbeddedResource>
item untuk memberi nama sumber daya yang disematkan dalam rakitan.
Dengan asumsi bahwa rakitan diberi nama myAssembly, kode berikut menghasilkan sumber daya tersemat bernama someQualifier.someResource.resources
:
<ItemGroup>
<EmbeddedResource Include="myResource.resx">
<LogicalName>someQualifier.someResource.resources</LogicalName>
</EmbeddedResource>
</ItemGroup>
Tanpa <LogicalName>
metadata, sumber daya akan diberi nama myAssembly.myResource.resources
. Contoh ini hanya berlaku untuk proses build Visual Basic dan Visual C#.