ध्यान दें कि यह this question का डुप्लिकेट हो, मुझे पूरी तरह से यकीन नहीं है।कोड अनुबंध पुनर्लेख 'सदस्य संदर्भ को हल नहीं कर सका'
मेरी समस्या यह है कि मेरे पास एक क्लास लाइब्रेरी प्रोजेक्ट है जिसमें किसी तृतीय-पक्ष प्रकार लाइब्रेरी (COM) का संदर्भ है। मैं तो जैसे, वर्ग पुस्तकालय में तरीकों में ठेके रखना चाहता हूँ:
public class foo
{
public static int divide(TypeFromTypeLib tftl, int a, int b)
{
Contract.Requires<ArgumentException>(b != 0);
return a/b;
}
}
और फिर एक ग्राहक परियोजना है इस विधि, उदा का इस्तेमाल करते हैं
var n = foo.divide(null, 4, 2);
लेकिन मुझे यह भी पसंद है कि क्लाइंट प्रोजेक्ट भी इसके कुछ तरीकों से अनुबंध का उपयोग करे। इसलिए, मैंने दोनों परियोजनाओं पर कोड अनुबंध अनुबंधों को 'रनटाइम कॉन्ट्रैक्ट चेकिंग' करने के लिए सेट किया है (जिसके बिना आपको रनटाइम जोर देता है कि आपको यह सेटिंग चाहिए)।
अब, जब मैं तो ग्राहक को संकलित करने का प्रयास करें, मैं निम्नलिखित त्रुटि मिलती है:
Could not resolve member reference: my_class_lib.foo::divide.
ccrewrite : error : Rewrite aborted due to metadata errors.
कौन सा अपरिहार्य लगता है - किसी भी समय जो तीसरे पक्ष के प्रकार लायब्रेरी से एक प्रकार है एक विधि कहा जाता है ऐसा होता है । विधि के हस्ताक्षर से प्रकार निकालें और यह ठीक है।
क्या कोई यह समझा सकता है कि ऐसा क्यों होता है? क्या यह एक सुराग है कि मेरे कोड की संरचना मूल रूप से त्रुटिपूर्ण है (यदि हां, क्यों?), या यह कोड अनुबंधों का एक प्रश्न है? क्या इस समस्या के लिए कोई अनुशंसित फिक्स है?
मुझे यह त्रुटि क्रिकराइट से मिल रही है, पहली पार्टी लाइब्रेरी में विधियों से जो उनके हस्ताक्षर में इंटरऑप प्रकार एम्बेडेड हैं। – JamesFaix
मैंने अपना प्रोजेक्ट वीएस2015 में खोला था और वीएस2013 पर स्विच किया था और यह मुद्दा चला गया था। Roslyn संकलक पुराने कंपाइलर की तुलना में एम्बेडेड इंटरऑप प्रकारों का अलग-अलग व्यवहार करता है, लेकिन मुझे इसके बारे में कोई दस्तावेज़ीकरण या वार्तालाप नहीं मिल रहा है। संभवतः संबंधित: http://stackoverflow.com/questions/35641972/why-does-visual-studio-2015-throw-more-cs1769-compiler-errors-than-vs2013 – JamesFaix
कोड अनुबंधों का कौन सा संस्करण आपने स्थापित किया है? 26 जनवरी, 2016 को v.1.10.10126.2-rc1 के रिलीज होने तक मुझे विजुअल स्टूडियो 2015 में काम करने वाले कोड अनुबंधों में कभी भी रनटाइम जांच नहीं मिली है। यह संस्करण कोड अनुबंधों की पहली बड़ी समुदाय संचालित रिलीज है और बहुत कुछ संबोधित करता है लंबित मुद्दों का। इसे डाउनलोड किया जा सकता है: https://github.com/Microsoft/CodeContracts/releases। मैंने इसे स्थापित किया है और रनटाइम जांच अब मेरे लिए काम करता है। –