Mengapa saya mendapatkan pesan error “Kode tidak aman hanya dapat muncul jika dikompilasi dengan / tidak aman”?

143

Mengapa saya mendapatkan kesalahan berikut?

Kode tidak aman hanya dapat muncul jika dikompilasi dengan / tidak aman "?

Saya bekerja di C # dan Visual Studio 2008 untuk pemrograman di Windows CE.

Emas
sumber

Jawaban:

276

Untuk menggunakan blok kode yang tidak aman, proyek harus dikompilasi dengan tombol / unsafe on.

Buka properti untuk proyek tersebut, buka Buildtab dan centang Allow unsafe codekotak centang.

Guffa
sumber
4
Saya harus mengatakan, meskipun itu memungkinkan build untuk dikompilasi, itu masih tidak memungkinkannya dipublikasikan ke web: /
Nick
5
@Nick: Ya, jika Anda menerbitkan kode untuk dikompilasi secara dinamis, maka pengaturan proyek tidak berlaku. Lihat stackoverflow.com/questions/16567197/…
Guffa
9
Perhatikan bahwa setelan mungkin berbeda antara kompilasi Debug dan Rilis. Ini hanya menghabiskan 20 menit hidup saya.
LosManos
Solusi cepat sederhana..bagus.
Kalher
Anda mungkin harus mengubah konfigurasi build dari Debug ke Rilis untuk berbagai jenis build
SZT
130

Ini tangkapan layarnya:

Tangkapan layar tidak aman

ََََََََ

Manoj Attal
sumber
9
Penting: Ketahuilah juga bahwa tangkapan layar ini untuk "Konfigurasi: Aktif (Debug)". Anda mungkin juga perlu mengubahnya menjadi "Rilis", karena kemungkinan besar itulah yang Anda publikasikan.
Doug S
4

Mungkin karena Anda menggunakan kode yang tidak aman.

Apakah Anda melakukan sesuatu dengan petunjuk atau rakitan yang tidak terkelola di suatu tempat?

Gerrie Schenck
sumber
4

Cari kode Anda untuk unsafeblok atau pernyataan. Ini hanya valid dikompilasi dengan /unsafe.

Richard
sumber
3

Untuk menggunakan blok kode yang tidak aman, buka properti proyek, buka tab Build dan centang kotak Izinkan kode tidak aman , lalu kompilasi dan jalankan.

class myclass
{
     public static void Main(string[] args)
     {
         unsafe
         {
             int iData = 10;
             int* pData = &iData;
             Console.WriteLine("Data is " + iData);
             Console.WriteLine("Address is " + (int)pData);
         }
     }
}

Keluaran:

Data is 10
Address is 1831848
dipankar ranjan baisya
sumber
3

Untuk semua orang yang menggunakan Rider, Anda harus memilih proyek Anda> Klik Kanan> Properti> Konfigurasi Kemudian pilih Debug dan Lepaskan dan centang "Izinkan kode tidak aman" untuk keduanya .Screenshot

Tobias Brohl
sumber