2009-07-16 19 views
5

पोस्टशर्प के हालिया उल्लेख ने मुझे इस बारे में याद दिलाया:कौन सा उपकरण आईएल के पोस्ट-कंपाइल संशोधन को निष्पादित करता है?

पिछले साल जहां मैंने काम किया था, हम पोस्टशर्प का उपयोग हमारे कोड में इंजेक्शन लगाने के लिए सोच रहे थे। यह एक टीम फाउंडेशन सर्वर टीम बिल्ड/सतत एकीकरण वातावरण में था।

इसके बारे में सोचते हुए, मुझे पोस्टशर्प के तरीके के बारे में एक अजीब लग रहा है - यह आईएलएल को कंपेलरों द्वारा जेनरेट किया गया है। इससे मुझे थोड़ा परेशान किया।

मैं इतना चिंतित नहीं था कि पोस्टशर्प सही ढंग से अपना काम नहीं करेगा; मैं इस तथ्य के बारे में चिंतित था कि यह पहली बार था जब मैं इस तरह के एक उपकरण के बारे में सुनना याद कर सकता था। मुझे चिंतित था कि अन्य टूल्स इसे ध्यान में नहीं ले सकते हैं।

वास्तव में, जैसा कि हम साथ चले गए, हम इस तथ्य से कुछ समस्याएं पैदा कर रहे हैं कि पोस्टशर्प इस बात से भ्रमित हो रहा था कि मूल आईएल किस फ़ोल्डर में था। यह हमारे निर्माण को तोड़ रहा था। यह एमएसबीयूआईएलडी लक्ष्य के साथ एक संघर्ष के कारण प्रतीत होता है जो परियोजना संदर्भों को हल करता है। यह संघर्ष इस तथ्य के कारण हुआ कि PostSharp आईएल के असम्बद्ध संस्करणों को स्टोर करने के लिए एक अस्थायी निर्देशिका का उपयोग करता है।

किसी भी दर पर, मेरे पास वापस जाने के लिए स्टैक ओवरफ्लो नहीं था! अब जब मैं करता हूं, तो मैं आपको सभी से पूछना चाहता हूं यदि आप किसी अन्य उपकरण के बारे में जानते हैं जो निर्माण प्रक्रिया के हिस्से के रूप में आईएल को संपादित करता है; या फिर माइक्रोसॉफ्ट विजुअल स्टूडियो, MSBuild, टीम बिल्ड, आदि में खाते में उपकरण की इस प्रकार की लेता


अद्यतन: जवाब के लिए धन्यवाद।

नीचे की रेखा कम से कम वीएस 2010 के साथ, माइक्रोसॉफ्ट वास्तव में पता होना चाहिए कि इस तरह की चीज हो सकती है। इसलिए यदि वीएस -2010 में इस क्षेत्र में समस्याएं हैं, तो माइक्रोसॉफ्ट दोष साझा कर सकता है।

उत्तर

3

मुझे पता है कि एक कोड obfuscator, Dotfuscator, असेंबली असेंबली के आईएल संशोधित करता है और यह कई निर्माण प्रक्रियाओं में उपयोग किया जाता है।

आईएल न केवल कोड कहानियो और सुरक्षा के लिए, लेकिन यह भी अपने अनुप्रयोगों में अतिरिक्त कार्यक्षमता सुई (क्रम खुफिया पर हमारे (PreEmptive के) ब्लॉग पोस्ट को देखने के संशोधित किया गया है here

इसके अलावा माइक्रोसॉफ्ट के आम संकलक बुनियादी सुविधा की क्षमता है , विधानसभाओं में पढ़ने के लिए उन्हें संशोधित करने और उन्हें फिर से लिखने। परियोजना के लिए CodePlex देखें।

4

मुझे Mono.Cecil के बारे में पता है, सिस्टम का विस्तार करने वाली एक ढांचा लाइब्रेरी। रिफ्लेक्शन टूलसेट, इसका उपयोग LinFu प्रोजेक्ट द्वारा किया जाता है।

मुझे बिल्ड प्रक्रिया समर्थन के बारे में निश्चित नहीं है, आपको उन्हें आकार के लिए जांचना चाहिए।

+1

परावर्तक के लिए एक ऐड-इन Reflexil कहा जाता है (http://sebastien.lebreton.free.fr/reflexil/) जो मोनो सेसिल पर आधारित है। –

4

.NET 4.0 में माइक्रोसॉफ्ट रिसर्च से code contracts प्रोजेक्ट शामिल है, जो आपके तरीकों की पूर्व/पोस्ट स्थितियों पर रनटाइम (और कुछ संकलन-समय) दावा करता है। दावा पुस्तकालय में लागू किए जाते हैं, और एक .NET संकलक पूर्व/पोस्ट स्थितियों को आईएल में विधियों के रूप में छोड़ देता है। हालांकि, चूंकि अनुबंध आमतौर पर किसी विधि की शुरुआत में निर्दिष्ट होते हैं, इसलिए माध्यमिक उपकरण को आईआर को फिर से लिखने की आवश्यकता होती है ताकि दावे को सही क्रम और सही स्थानों में रखा जा सके।

संपादित करें:

  • cccheck उपकरण है जो बाद निर्माण चलाता है और एक स्थिर चेकर कि संकलन समय पर ठेके
  • ccrewrite उपकरण है जो पद cccheck चलाता है की पुष्टि करता है , आईएल को फिर से लिखना और अनुबंधों से रनटाइम जांच उत्पन्न करना

(मुझे कोई एडीआई नहीं मिल रहा है इन उपकरणों के बारे में tional तकनीकी जानकारी)

मैंने अभी तक विजुअल स्टूडियो 2010 का उपयोग नहीं किया है, लेकिन मैंने कोड अनुबंध सुविधाओं का एक डेमो देखा है और इसे आईडीई बिल्ड प्रक्रिया में एकीकृत किया गया है। सीसीएचके को हमेशा चलाना चाहिए, यदि अनुबंध असेंबली में अनुबंध मौजूद हैं तो कोड लौटाएं। यदि वे मौजूद हैं, तो कोड इंगित करेगा कि क्रिकराइट चलाना चाहिए।

+0

क्या आप इस दूसरे टूल के बारे में और कुछ कह सकते हैं? –

1

Fody एक प्लगइन वास्तुकला पर आधारित .net विधानसभाओं बुनाई के लिए एक विस्तृत उपकरण है।