2010-06-02 14 views
7

मैं बस पोस्टशर्प/एओपी के साथ शुरू कर रहा हूं। मैं कुछ addins के उपयोग को ट्रैक करने के लिए सी # के लिए कुछ उपकरण बनाना चाहता हूं जिसे मैं सॉफ़्टवेयर के चोटी के लिए लिखता हूं।पोस्टशर्प में असेंबली लोड अपवाद, संदर्भित डीएलएल से तर्क के साथ समस्या?

मैं विधि को कॉल करते समय कुछ पैरामीटर के मानों को ध्यान में रखने के लिए OnMethodBoundaryAspect क्लास का उपयोग करने का प्रयास कर रहा हूं। वे पैरामीटर ऐसे प्रकार हैं जिन्हें बाहरी डीएलएल में संदर्भित किया जाता है।

जब मैं विधि करने के लिए मेरी विशेषता जोड़ने, परियोजना का निर्माण नहीं होगा, मैं निम्नलिखित त्रुटि मिलती है

त्रुटि 2 क्रिया के अपवाद (2.0.5.1204, 64 बिट, CLR 2.0, रिलीज): PostSharp.CodeModel .AssemblyLoadException: असेंबली लोड करने में त्रुटि "सी: \ प्रोग्राम फ़ाइलें \ Autodesk \ Revit संरचना 2011 \ Program \ RevitAPI.dll": फ़ाइल या असेंबली लोड नहीं कर सका 'revitapi, संस्करण = 0.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = null 'या इसकी निर्भरताओं में से एक। ऑपरेशन समर्थित नहीं है। (HRESULT से अपवाद: 0x80131515)

REVitAPI.dll उस प्रकार के साथ फ़ाइल है। मैंने प्रोजेक्ट में केवल विशेषता जोड़ने का परीक्षण किया है लेकिन इसे किसी भी तरीके से लागू नहीं किया है, इससे त्रुटि भी होती है। तो ऐसा लगता है कि यह विधि पैरामीटर प्रकार से संबंधित नहीं है, बल्कि केवल इस डीएलएल का अस्तित्व है।

क्या कोई इस मुद्दे पर पहले आया है, या कोई मुझे सही दिशा में इंगित कर सकता है कि इस पर कुछ और जानकारी कहां प्राप्त करें?

उत्तर

9

यह सी ++ निर्भरताओं के साथ एक ज्ञात मुद्दा है।

कारण यह है कि RevitAPI.dll शुद्ध MSIL नहीं है, इसलिए इसे मूल (तेज़) होस्ट द्वारा लोड नहीं किया जा सकता है।

इस असेंबली को "अनदेखा" के रूप में चिह्नित करने के लिए एक कामकाज है। आप ऐसा कर सकते हैं csproj संपादन और जोड़कर:

<PropertyGroup> 
    <PostSharpProperties>IgnoredAssemblies=RevitAPI</PostSharpProperties> 
</PropertyGroup> 

यदि यह काम नहीं करता है (कोई रास्ता नहीं PostSharp विधानसभा की अनदेखी करने के लिए है, क्योंकि), तो आप कामयाब (धीमा) मेजबान का उपयोग करने के PostSharp मजबूर करने के लिए है :

<PropertyGroup> 
    <PostSharpHost>Managed</PostSharpHost> 
</PropertyGroup> 
संबंधित मुद्दे