Opsi pengkompilasi C# yang menentukan sumber daya

Opsi berikut mengontrol cara pengompilasi C# membuat atau mengimpor sumber daya Win32. Sintaksis MSBuild baru ditampilkan dalam Huruf tebal. Sintaks csc.exe yang lebih lama ditampilkan dalam huruf code style.

  • Win32Resource / -win32res: Menentukan file sumber daya Win32 (.res).
  • Win32Icon / -win32icon: Metadata acuan dari file atau file rakitan yang ditentukan.
  • Win32Manifest / -win32manifest: Menentukan file manifes Win32 (.xml).
  • NoWin32Manifest / -nowin32manifest: Jangan menyertakan manifes Win32 default.
  • EmbeddedResource / -resource: Sematkan sumber daya yang ditentukan (Bentuk pendek: /res).
  • LinkResource / -linkresource: Tautkan sumber daya yang ditentukan ke rakitan ini.

Catatan

Untuk informasi selengkapnya tentang mengonfigurasi opsi ini untuk proyek Anda, lihat Opsi pengkompilasi.

Win32Resource

Opsi Win32Resource menyisipkan sumber daya Win32 dalam file output.

<Win32Resource>filename</Win32Resource>

filename adalah file sumber daya yang ingin Anda tambahkan ke file output Anda. Sumber daya Win32 dapat berisi informasi versi atau bitmap (ikon) yang membantu mengidentifikasi aplikasi Anda di File Explorer. Jika Anda tidak menentukan opsi ini, pengkompilasi menghasilkan informasi versi berdasarkan versi rakitan.

Win32Icon

Opsi Win32Icon menyisipkan file .ico dalam file output, yang memberikan file output tampilan yang diinginkan di File Explorer.

<Win32Icon>filename</Win32Icon>

filename adalah file .ico yang ingin Anda tambahkan ke file output Anda. Anda dapat membuat file .ico dengan menggunakan Pengkompilasi Sumber Daya. Pengkompilasi Sumber Daya dipanggil saat Anda mengkompilasi program Visual C++. File .ico dibuat dari file .rc .

Win32Manifest

Gunakan opsi Win32Manifest untuk menentukan file manifes aplikasi Win32 yang ditentukan pengguna untuk disematkan ke dalam file portable executable (PE) proyek.

<Win32Manifest>filename</Win32Manifest>

filename adalah nama dan lokasi file manifes kustom. Secara default, pengkompilasi C# menyematkan manifes aplikasi yang menentukan tingkat eksekusi yang diminta dari asInvoker. Ini membuat manifes di folder yang sama tempat executable dibangun. Jika Anda ingin menyediakan manifes kustom, misalnya untuk menentukan tingkat eksekusi yang diminta dari highestAvailable atau requireAdministrator, gunakan opsi ini untuk menentukan nama file.

Catatan

Opsi Win32Manifest dan opsi Win32Resource saling eksklusif. Jika Anda mencoba menggunakan kedua opsi di baris perintah yang sama, Anda mendapatkan kesalahan build.

Aplikasi yang tidak memiliki manifes aplikasi yang menentukan tingkat eksekusi yang diminta tunduk pada virtualisasi file dan registri di bawah fitur Kontrol Akun Pengguna di Windows. Untuk informasi selengkapnya, lihat Kontrol Akun Pengguna.

Aplikasi Anda tunduk pada virtualisasi jika salah satu kondisi ini benar:

  • Anda menggunakan opsi NoWin32Manifest dan Anda tidak menyediakan manifes pada langkah build selanjutnya atau sebagai bagian dari file Windows Resource (.res) dengan menggunakan opsi Win32Resource.
  • Anda menyediakan manifes kustom yang tidak menentukan tingkat eksekusi yang diminta.

Visual Studio membuat file .manifest default dan menyimpannya di direktori debug dan rilis bersama file executable. Anda dapat menambahkan manifes kustom dengan membuatnya di editor teks lalu menambahkan file ke proyek. Atau, Anda dapat mengeklik kanan ikon Proyek di Penjelajah Solusi, pilih Tambahkan Item Baru, lalu pilih File Manifes Aplikasi. Setelah Anda menambahkan file manifes baru atau yang sudah ada, file tersebut muncul di daftar drop-down Manifes . Untuk informasi selengkapnya, lihat Halaman Aplikasi, Project Designer (C#).

Anda dapat menyediakan manifes aplikasi sebagai langkah pasca-build kustom atau sebagai bagian dari file sumber daya Win32 dengan menggunakan opsi NoWin32Manifest. Gunakan opsi yang sama jika Anda ingin aplikasi Anda tunduk pada virtualisasi file atau registri di Windows Vista.

-NoWin32Manifest

Gunakan opsi NoWin32Manifest untuk menginstruksikan pengompilasi agar tidak menyematkan manifes aplikasi apa pun ke dalam file yang dapat dieksekusi.

<NoWin32Manifest />

Saat Anda menggunakan opsi ini, aplikasi tunduk pada virtualisasi pada Windows Vista kecuali Anda memberikan manifes aplikasi dalam file Sumber Daya Win32 atau selama langkah build selanjutnya.

Pada Visual Studio, atur opsi ini di halaman Properti Aplikasi dengan memilih opsi Buat Aplikasi Tanpa Manifes di daftar drop-down Manifes. Untuk informasi selengkapnya, lihat Halaman Aplikasi, Project Designer (C#).

EmbeddedResource

Menyematkan sumber daya yang ditentukan ke dalam file output.

<EmbeddedResource Include="filename">
  <LogicalName>identifier</LogicalName>
  <Access>accessibility-modifier</Access>
</EmbeddedResource>

filename adalah file sumber daya .NET yang ingin Anda sematkan dalam file output. identifier (opsional) adalah nama logis untuk sumber daya: nama yang Anda gunakan untuk memuat sumber daya. Defaultnya adalah nama file. accessibility-modifier (opsional) adalah aksesibilitas sumber daya: publik atau privat. Defaultnya adalah publik. Secara default, sumber daya bersifat publik di rakitan saat Anda membuatnya dengan menggunakan pengkompilasi C#. Untuk membuat sumber daya privat, tentukan private sebagai pengubah aksesibilitas. Tidak ada aksesibilitas lain yang diizinkan. Jika filename adalah file sumber daya .NET yang dibuat, misalnya, dengan Resgen.exe atau di lingkungan pengembangan, Anda dapat mengaksesnya dengan menggunakan anggota di System.Resources namespace layanan. Untuk informasi selengkapnya, lihat System.Resources.ResourceManager . Untuk semua sumber daya lainnya, gunakan metode GetManifestResource di kelas Assembly untuk mengakses sumber daya pada durasi. Urutan sumber daya dalam file output berasal dari pesanan yang ditentukan dalam file proyek.

LinkResource

Membuat tautan ke sumber daya .NET pada file output. File sumber daya tidak ditambahkan ke file output. LinkResource berbeda dari opsi EmbeddedResource , yang menyematkan file sumber daya dalam file output.

<LinkResource Include="filename">
  <LogicalName>identifier</LogicalName>
  <Access>accessibility-modifier</Access>
</LinkResource>

filename adalah file sumber daya .NET yang ingin Anda tautkan dari rakitan. identifier (opsional) adalah nama logis untuk sumber daya: nama yang Anda gunakan untuk memuat sumber daya. Defaultnya adalah nama file. accessibility-modifier (opsional) adalah aksesibilitas sumber daya: publik atau privat. Defaultnya adalah publik. Secara default, sumber daya tertaut bersifat publik di perakitan saat Anda membuatnya dengan menggunakan pengkompilasi C#. Untuk membuat sumber daya privat, tentukan private sebagai pengubah aksesibilitas. Tidak ada pengubah lain yang diizinkan. Jika filename adalah file sumber daya .NET yang dibuat, misalnya, dengan Resgen.exe atau di lingkungan pengembangan, Anda dapat mengaksesnya dengan menggunakan anggota di System.Resources namespace layanan. Untuk informasi selengkapnya, lihat System.Resources.ResourceManager . Untuk semua sumber daya lainnya, gunakan metode GetManifestResource di kelas Assembly untuk mengakses sumber daya pada durasi. File yang ditentukan dalam filename bisa dalam format apa pun. Misalnya, Anda mungkin ingin membuat bagian DLL asli dari rakitan, sehingga dapat diinstal ke cache perakitan global dan diakses dari kode terkelola di rakitan. Anda dapat melakukan hal yang sama di Assembly Linker. Untuk informasi selengkapnya, lihat Al.exe (Assembly Linker) dan Bekerja dengan Assembly dan Global Assembly Cache.