เหตุใดฉันจึงได้รับข้อผิดพลาด“ รหัสไม่ปลอดภัยอาจปรากฏเฉพาะเมื่อคอมไพล์ด้วย / ไม่ปลอดภัย”


140

เหตุใดฉันจึงได้รับข้อผิดพลาดต่อไปนี้

รหัสที่ไม่ปลอดภัยอาจปรากฏขึ้นต่อเมื่อคอมไพล์ด้วย / ไม่ปลอดภัย "?

ฉันทำงานใน C # และ Visual Studio 2008 สำหรับการเขียนโปรแกรมบน Windows CE



คำตอบ:


274

ในการใช้บล็อกรหัสที่ไม่ปลอดภัยโครงการจะต้องรวบรวมด้วยสวิตช์ / ไม่ปลอดภัย

เปิดคุณสมบัติของโครงการไปที่Buildแท็บและAllow unsafe codeทำเครื่องหมายที่ช่องทำเครื่องหมาย


4
ฉันต้องบอกว่าถึงแม้ว่ามันจะช่วยให้คอมไพล์คอมไพล์ได้ แต่ก็ยังไม่อนุญาตให้เผยแพร่บนเว็บ: /
นิค

5
@Nick: ใช่ถ้าคุณเผยแพร่รหัสเพื่อรวบรวมแบบไดนามิกการตั้งค่าโครงการจะไม่นำไปใช้ ดูstackoverflow.com/questions/16567197/…
Guffa

9
โปรดทราบว่าการตั้งค่าอาจแตกต่างกันระหว่าง Debug และ Release compile แค่นี้ฉันเสียชีวิต 20 นาที
LosManos

วิธีแก้ปัญหาอย่างรวดเร็วง่ายมาก
Kalher

131

นี่คือภาพหน้าจอ:

ภาพหน้าจอไม่ปลอดภัย

ََََََََ


8
สำคัญ: โปรดทราบว่าภาพหน้าจอนี้ใช้สำหรับ "การกำหนดค่า: ใช้งานอยู่ (ดีบั๊ก)" คุณอาจต้องเปลี่ยนเป็น "Release" เนื่องจากอาจเป็นสิ่งที่คุณเผยแพร่มากที่สุด
Doug S

4

อาจเป็นเพราะคุณกำลังใช้รหัสที่ไม่ปลอดภัย

คุณกำลังทำอะไรบางอย่างกับพอยน์เตอร์หรือชุดประกอบที่ไม่มีการจัดการอยู่หรือเปล่า?


4

ค้นหารหัสของคุณสำหรับunsafeบล็อกหรือข้อความสั่ง /unsafeเหล่านี้เป็นเพียงที่ถูกต้องจะรวบรวมกับ


3

หากต้องการใช้บล็อกรหัสที่ไม่ปลอดภัยให้เปิดคุณสมบัติของโครงการไปที่แท็บสร้างและทำเครื่องหมายที่ช่องทำเครื่องหมายอนุญาตรหัสที่ไม่ปลอดภัยจากนั้นจึงรวบรวมและเรียกใช้

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);
         }
     }
}

เอาท์พุท:

Data is 10
Address is 1831848

3

สำหรับทุกคนที่ใช้ไรเดอร์คุณจะต้องเลือกโครงการของคุณ> คลิกขวา> Properties> การตั้งค่าจากนั้นเลือกแก้ปัญหาและการวางจำหน่ายและตรวจสอบ "อนุญาตให้รหัสไม่ปลอดภัย" สำหรับทั้งสองภาพหน้าจอ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.