2011-10-07 6 views
13

मुझे सी # एएसपी.NET एप्लिकेशन संकलित करते समय विजुअल स्टूडियो 2008 से अजीब चेतावनी मिल रही है। क्या कोई मुझे इस स्पष्टीकरण के अर्थ के बारे में स्पष्टीकरण (कुछ अक्षरों के शब्दों में, यदि संभव हो) में इंगित कर सकता है?"रनटाइम मार्शलर द्वारा मार्शल नहीं किया जा सकता" का क्या अर्थ है?

कम से कम 'IasHelper.Process' के लिए तर्कों में से एक क्रम marshaler द्वारा मार्शल नहीं किया जा सकता। इस प्रकार के तर्क एक सूचक के रूप में पारित किए जाएंगे और इन्हें छेड़छाड़ करने के लिए असुरक्षित कोड की आवश्यकता हो सकती है।

उत्तर

9

मार्शल क्लास अप्रबंधित कोड/कक्षाओं को प्रबंधित कक्षाओं में परिवर्तित करने के लिए जिम्मेदार है और इसके विपरीत। the msdn documentation of the Marshal Class देखें।

यदि आप COM ऑब्जेक्ट तक पहुंचने के लिए कुछ इंटरऑप असेंबली शामिल करते हैं या ऐसा हो सकता है कि मार्शल (एल) एर ऑपरेशन का ख्याल नहीं रख सकता है। इस प्रकार आपके पास अपने प्रोग्राम में चलने वाले अर्ध-अप्रबंधित भाग हैं जो बदले में बफर ओवररन्स जैसे खराब चीजें पैदा कर सकते हैं। इस प्रकार आप प्रबंधित कोड की सुरक्षित, आरामदायक दुनिया छोड़ देते हैं और सी/सी ++ और उनके डरावने भाइयों के मसौदे, खतरनाक दायरे में प्रवेश करते हैं। :-)

+1

धन्यवाद। उस संदर्भ लिंक (http://justlikeamagic.com/2010/03/09/marshaling/) जो व्यापक है। –

7

लगता है जैसे आप एक ActiveX ऑब्जेक्ट का संदर्भ दे रहे हैं और यह tlbimp.exe को एक कठिन समय COM और .NET के बीच कुछ विधियों और संरचना सदस्यों के तर्कों को मार्शल कर रहा है।

यह शायद साफ निर्माण के दौरान हो रहा है क्योंकि यह एकमात्र समय है tlbimp को चलाने के लिए है। एक सामान्य निर्माण करने का प्रयास करें जहां आपने पहले साफ नहीं किया था।

+0

इसके लिए धन्यवाद। मैंने इस धागे पर बस ठोकर खाई है (http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/92cc0495-729b-40be-a49c-00676c21b8e3) जहां एक साथी को एक ही समस्या थी। बल्कि चिंताजनक, है ना? –