मुझे त्रुटि क्यों मिलती है "असुरक्षित कोड केवल तभी दिखाई दे सकता है जब / असुरक्षित" के साथ संकलन हो?


140

मुझे निम्न त्रुटि क्यों मिलती है?

असुरक्षित कोड केवल तभी दिखाई दे सकता है जब "असुरक्षित" के साथ संकलन किया जाए?

मैं विंडोज सीई पर प्रोग्रामिंग के लिए सी # और विजुअल स्टूडियो 2008 में काम करता हूं।



जवाबों:


274

असुरक्षित कोड ब्लॉक का उपयोग करने के लिए, प्रोजेक्ट को / असुरक्षित स्विच ऑन के साथ संकलित करना होगा।

प्रोजेक्ट के लिए गुण खोलें, Buildटैब पर जाएं और Allow unsafe codeचेकबॉक्स की जांच करें ।


4
मुझे कहना होगा, भले ही वह निर्माण को संकलित करने में सक्षम हो, लेकिन यह अभी भी इसे वेब पर प्रकाशित करने की अनुमति नहीं देता है: /
निक

5
@ निक: हां, यदि आप गतिशील रूप से संकलित होने के लिए कोड प्रकाशित करते हैं, तो परियोजना सेटिंग्स लागू नहीं होती हैं। देखें stackoverflow.com/questions/16567197/...
Guffa

9
ध्यान दें कि सेटिंग्स डिबग और रिलीज़ संकलन के बीच भिन्न हो सकती हैं। यह मेरे जीवन का सिर्फ 20 मिनट का खर्च है।
15

सरल त्वरित समाधान।
कालहर

131

यहाँ एक स्क्रीनशॉट है:

असुरक्षित स्क्रीनशॉट

ََََََََ


8
महत्वपूर्ण: यह भी ध्यान रखें कि यह स्क्रीनशॉट "कॉन्फ़िगरेशन: एक्टिव (डीबग)" के लिए है। आपको संभवतः "रिलीज़" के लिए भी इसे बदलना होगा, क्योंकि यह संभव है कि आप जो प्रकाशित कर रहे हैं।
डग एस

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

राइडर का उपयोग करने वाले हर व्यक्ति के लिए आपको अपनी परियोजना> राइट क्लिक> गुण> कॉन्फ़िगरेशन का चयन करना होगा और फिर डिबग और रिलीज़ का चयन करें और दोनों के लिए "अनुमति दें असुरक्षित कोड" की जांच करें ।स्क्रीनशॉट

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.