Dalam semua contoh yang pernah saya lihat dari direktif compiler #if, mereka menggunakan "DEBUG". Bisakah saya menggunakan "RELEASE" dengan cara yang sama untuk mengecualikan kode yang saya tidak ingin jalankan ketika dikompilasi dalam mode debug? Kode yang ingin saya kelilingi dengan blok ini mengirimkan banyak email, dan saya tidak ingin secara tidak sengaja mengirimkannya saat pengujian.
277
#if !DEBUG
melayani fungsi yang sama seperti#if RELEASE
seharusnya. Atau,#if DEBUG
maka#else
maka#endif
jika ada kode yang berbeda untuk menjalankan dalam mode.Jawaban:
Tidak, itu tidak akan terjadi, kecuali jika Anda melakukan pekerjaan.
Bagian penting di sini adalah apa sebenarnya DEBUG, dan itu adalah semacam konstanta yang didefinisikan yang dapat diperiksa oleh kompiler.
Jika Anda memeriksa properti proyek, di bawah tab Build, Anda akan menemukan tiga hal:
Tidak ada kotak centang seperti itu, atau konstanta / simbol yang sudah ditentukan sebelumnya yang memiliki nama RELEASE.
Namun, Anda dapat dengan mudah menambahkan nama itu ke kotak teks berlabel Simbol kompilasi bersyarat, tetapi pastikan Anda mengatur konfigurasi proyek ke mode Rilis sebelum melakukannya, karena pengaturan ini adalah per konfigurasi.
Jadi pada dasarnya, kecuali Anda menambahkannya ke kotak teks,
#if RELEASE
tidak akan menghasilkan kode apa pun di bawah konfigurasi apa pun.sumber
RELEASE
tidak ditentukan, tetapi Anda dapat menggunakansumber
RELEASE
sudah didefinisikan.Nggak.
Sementara dalam konfigurasi debug ada
DEBUG
konstanta yang didefinisikan (secara otomatis ditentukan oleh Visual Studio) sementara tidak ada konstanta yang ditentukan untuk mode rilis. Periksa pengaturan proyek Anda dalam pengembangan.Memilih [Tetapkan DEBUG konstan] di bawah Project -> Build seperti memasukkan #define DEBUG di awal setiap file.
Jika Anda ingin menetapkan konstanta RELEASE untuk konfigurasi rilis, buka:
sumber
#if (RELEASE) [RequireHttps] #endif
Pada instalasi VS saya (VS 2008)
#if RELEASE
tidak bekerja. Namun Anda bisa menggunakannya#if !DEBUG
Contoh:
sumber
Saya belum pernah melihat itu sebelumnya ... tetapi saya telah melihat:
dan
Itu berhasil untukmu?
sumber
!
operator yang akan bekerja, seperti pada contoh kedua Anda.Anda dapat menggunakan
#if(!DEBUG)
untuk tujuan ini.sumber
"Pop Catalin" benar. Mengontrol definisi berdasarkan jenis bangunan memberikan banyak fleksibilitas. Misalnya, Anda dapat memiliki konfigurasi "DEBUG", "DEMO", dan "RELEASE" semua dalam solusi yang sama. Itu mencegah perlunya duplikasi pemrograman dengan dua solusi berbeda.
Jadi ya
#if RELEASE
atau#if (RELEASE)
berfungsi sama seperti#if DEBUG
ketika simbol kompilasi kondisional RELEASE didefinisikan.Berikut ini diambil dari posting "Pop Catalin": Jika Anda ingin mendefinisikan konstanta RELEASE untuk konfigurasi rilis, masuk ke: * Project Properties -> Build * Pilih Release Mode * di kotak teks simbol kompilasi simbol masukkan: RELEASE
sumber
Saya tahu ini adalah pertanyaan lama, tetapi mungkin perlu disebutkan bahwa Anda dapat membuat konfigurasi sendiri di luar DEBUG dan RELEASE, seperti TEST atau UAT.
Jika kemudian pada tab Build dari halaman properti proyek Anda kemudian mengatur "simbol kompilasi bersyarat" ke TEST (misalnya) Anda kemudian dapat menggunakan konstruk seperti
Anda dapat menggunakan konstruk ini untuk alasan tertentu seperti klien yang berbeda jika Anda memiliki kebutuhan, atau bahkan seluruh Metode Web misalnya. Kami juga telah menggunakan ini di masa lalu di mana beberapa perintah menyebabkan masalah pada perangkat keras tertentu, jadi kami memiliki konfigurasi untuk sebuah aplikasi ketika digunakan untuk perangkat keras X.
sumber
Anda dapat membuat sendiri simbol waktu kompilasi bersyarat (nama apa pun yang Anda suka). Buka "dialog Bangun proyek", yang terletak di kotak properti proyek, opsi menu: Proyek -> [nama proyek] Properti ...
Anda juga dapat mendefinisikannya "di bagian atas file kode C #". Suka:
Anda dapat menggunakan simbol dalam pernyataan #jika:
sumber
kenapa tidak adil?
sumber
/d:RELEASE
juga akan bekerja. Anda juga bisa menambahkan ini ke simbol kompilasi bersyarat di bawah konfigurasi Release (tab build properti proyek).