2010-06-23 8 views
8

मैं एक .NET 4 प्रोजेक्ट पर काम कर रहा हूं, और HyperDescriptor प्रदान करता है गतिशील संपत्ति पहुंच से लाभ प्राप्त करने में सक्षम होगा, लेकिन .NET 4 में निर्मित होने पर यह ठीक से काम नहीं कर रहा है। मैंने स्रोत डाउनलोड किया कोडप्रोजेक्ट ने समाधान को एक परियोजना को वीएस -2010 में परिवर्तित कर दिया, और लक्ष्य ढांचे को 4.0 तक अपडेट किया। हालांकि यह बनाता है, और नमूना सही तरीके से निष्पादित करता है, समय दिखाता है कि हाइपरडिस्क्रिप्टर के साथ गतिशील संपत्ति का उपयोग धीमा ऑब्जेक्ट मान प्राप्त करने/स्थापित करने का संभावित तरीका है।क्या हाइपरडिस्क्रिप्टर .NET 4 में निर्मित होने पर काम करता है?

यह समस्या तब होती है जब आप .NET 4 के साथ स्रोत से हाइपरडिस्क्रिप्टर बनाते हैं। यदि आपके .NET 4 प्रोजेक्ट से, आप .NET 2 के साथ बनाए गए हाइपरडिस्क्रिप्टर का संदर्भ जोड़ते हैं, तो यह ठीक काम करता है। यह अब के लिए एक स्वीकार्य समाधान है, लेकिन क्या .NET 4 बिल्ड का उपयोग करने के लिए कुछ संभावित लाभ होगा? कोई भी हाइपरडिस्क्रिप्टर पर एक दरार लेना चाहता है, देखें कि यह .NET 4 बिल्ड के साथ इतना धीमा क्यों है?

+0

ओह। दिलचस्प। हल नहीं होने पर कल कल देखेंगे। –

उत्तर

13

मैंने स्रोत कोड डाउनलोड किया और .NET 4 के साथ परीक्षण चलाया। InvalidOperationException की प्रभावशाली संख्या धीमी और पकड़ी गई, जिससे धीमा हो गया।

HyperTypeDescriptionProvider.BuildDescriptor पर जाएं और बदलें:

[ReflectionPermission(SecurityAction.Assert, Flags = ReflectionPermissionFlag.AllFlags)] 

द्वारा:

[SecuritySafeCritical] 
[ReflectionPermission(SecurityAction.Assert, Unrestricted = true)] 

AllFlags बहिष्कृत है और केवल एक चेतावनी का कारण बनता है, लेकिन एक सुरक्षा पारदर्शी विधि से जोर देते हुए नेट 4 में मान्य नहीं है अधिक जानकारी के लिए Security Changes in the .NET Framework 4 देखें।

+1

बहुत दिलचस्प! –

+0

पूरी तरह से काम किया, समय फिर से सुपर तेज हैं। धन्यवाद! –

संबंधित मुद्दे