रिफ्लेक्टर के लिए खुला स्रोत विकल्प? [बन्द है]


419

बस यह पूछने के लिए कि क्या किसी को रेडगेट के रिफ्लेक्टर के लिए एक खुले स्रोत का विकल्प पता है ? मैं यह देखने में रुचि रखता हूं कि रिफ्लेक्टर के समान एक उपकरण वास्तव में कैसे काम करता है।

ध्यान दें, यदि आप रिफ्लेक्टर के लिए एक मुक्त लेकिन खुला स्रोत विकल्प नहीं जानते हैं, तो आप निम्नलिखित संबंधित प्रश्न का उत्तर दे सकते हैं:

सारांश - अपडेट किया गया 11 मई 2011

सुझाए गए विभिन्न ओपन सोर्स प्रोजेक्ट्स और टूल्स का एक त्वरित राउंड-अप:

  1. सामान्य संकलक इन्फ्रास्ट्रक्चर (CCI)
  2. मोनो सेसिल
  3. ILSpy
  4. dnSpy ( ILSpy का कांटा, परियोजना मूल से अधिक सक्रिय दिखाई देती है)
  5. डॉटनेट आईएल संपादक (Dile)
  6. IL.View
  7. Monoflector ( अब अप्रैल 2011 तक सक्रिय नहीं है )

निम्नलिखित संसाधन भी रुचि के हो सकते हैं:

  • TypeView.cs
  • जेसन हेली के नोट्स disassembling .NET पर
  • एड्रियन बैंक के हालिया ब्लॉग पोस्ट में कई रिफ्लेक्टर विकल्पों का सारांश दिया गया है, जिसमें नीचे उल्लिखित कई विकल्प शामिल नहीं हैं।
  • मार्क लिक्टेनबर्ग के विस्तृत ब्लॉग पोस्ट में रिफ्लेक्टर के लिए खुले स्रोत के कई विकल्प (DILE, ILSpy और मोनो सेसिल का उपयोग करते हुए) की तुलना की गई है।

2
FYI करें, अब v6 का एक संस्करण है जो अनिश्चित काल के
thecoop


2
@ मैट, यदि आप तिथियों की जांच करते हैं, तो यह प्रश्न .NET रिफ्लेक्टर से कुछ बेहतर से पहले पूछा गया था? सवाल। साथ ही, यह प्रश्न विशेष रूप से खुले स्रोत के विकल्प के लिए पूछ रहा है।
मैजिकएंडी

जवाबों:


31

2 विकल्प मुझे पता है।

इन अभ्यस्त आप सी # हालांकि दे।


लेप्पी, धन्यवाद। मैं इसे उत्तर के रूप में स्वीकार कर रहा हूं, भले ही यह आपके उत्तर और जेसन हेली के बीच एक कठिन विकल्प था।
मैजिकएंडी

CCI में GUI फ्रंट-एंड नहीं है (जो मुझे पता है)। लेकिन कोडप्लेक्स में वर्तमान स्रोत में विघटित एएसटी को सी #, फी में परिवर्तित करने के लिए एक बहुत ही सरल एपीआई है।
justin.m.chas

2
Mono.Cecil सिर्फ एक पुस्तकालय है, है ना?
रॉबर्ट जेप्पसेन

175

13 दिसंबर 2011 को अपडेट किया गया

निम्नलिखित खुले स्रोत उपकरण उपलब्ध हैं:


1
मैंने कुछ साल पहले डिले का इस्तेमाल किया था - यह एक बेहतरीन डिस्सेम्बलर और डिबगर है - जब मैंने इसे इस्तेमाल किया था, तो मैंने इसकी बहुत सिफारिश की थी। हालांकि मैं थोड़ी देर के लिए इसका इस्तेमाल नहीं किया है।
जेसन हेली

8
ILSpy का वर्तमान संस्करण (ILSpy v1.0.0.440, 20010228) काम कर रहा है जैसे मुझे उम्मीद थी कि यह होगा। मैं पीडीबी फ़ाइल के बिना C # lib के लिए तरीके, गुण और यहां तक ​​कि स्रोत कोड ब्राउज़ कर सकता हूं।
मैथिजुत्समेगेन

6
बस ILSpy का उपयोग करना शुरू कर दिया। अब तक इससे बहुत खुश हैं। बिल्कुल सही प्रतिस्थापन। शुक्रिया शार्पवेल्ड!
कोडमेकिन

1
बस इस उपकरण के पार आया, .NET डेवलपर के टूल बेल्ट में स्टेपल के प्रतिस्थापन को देखकर बहुत खुश हुआ। कुछ विघटन एक छोटे से अजीब हैं (स्ट्रिंग संयोजन के रूप में दिखाता है कि आईएल इसे देखेगा, लेकिन जरूरी नहीं कि कोड लिखा गया था - बुरी चीज नहीं), लेकिन कुल मिलाकर, एक महान उपकरण!
कोडमोनकी 1313

5
मैं सिर्फ ILSpy की कोशिश की और यह बहुत अच्छा काम करता है! यह लैम्ब्डा एक्सप्रेशन और पुनरावृत्ति ("यील्ड रिटर्न") के तरीकों को भी समेटता है ... वाह! मैं प्रभावित हु!
क्वर्टी

38

एक और प्रतिस्थापन dotPeek होगा । JetBrains ने इसे एक मुफ्त टूल के रूप में घोषित किया। यह संभवतः अधिक सुविधाएँ जब उनके Resharper के साथ इस्तेमाल किया जाएगा, लेकिन यहां तक ​​कि जब अकेले इस्तेमाल किया यह बहुत अच्छी तरह से काम करता है।

उपयोगकर्ता का अनुभव एक स्टैंडअलोन डिस्सेम्बलर की तुलना में एमएसवीएस की तरह अधिक है। मुझे रिफ्लेक्टर की तुलना में कोड पढ़ना अधिक पसंद है। Ctrl + T नेविगेशन मुझे बेहतर भी सूट करता है। कोड पेन के साथ पेड़ को सिंक्रनाइज़ करना बेहतर हो सकता है।

सब सब में, यह अभी भी विकास में है लेकिन पहले से ही बहुत अच्छी तरह से प्रयोग करने योग्य है।


2
महान उपकरण, लेकिन खुला स्रोत नहीं। हालांकि, यह मुफ़्त है, जिसका मतलब है कि यह किसी भी ओपनसोर्स समकक्ष से स्पॉटलाइट चुरा सकता है।
आकर्षित नोक

फर्डिनेंड, -1 एक बंद स्रोत उपकरण के लिए। आपको इसे रिफ्लेक्टर के लिए लिंक किए गए प्रश्नों में से एक में जोड़ने का प्रयास करना चाहिए।
मैजिकएंडी

3
जानकारी को और पूर्ण बनाने के लिए मैं अपना उत्तर यहाँ छोड़ रहा हूँ। यह धागा Google द्वारा खोजने में सबसे आसान है और यहां अन्य उपकरणों की सूची भी सबसे अधिक पूर्ण है। (उनमें से सभी OSS btw नहीं हैं।)
फर्डिनेंड प्रैंटल

फर्डिनेंड, मैंने लगातार सभी उत्तर दिए हैं जो बंद स्रोत समाधान देते हैं, प्रश्न पाठ को बार-बार अद्यतन करते हैं कि यह निर्दिष्ट करने के लिए कि मुझे केवल ओएसएस में दिलचस्पी है, और यह सुनिश्चित करें कि प्रश्न सारांश में सभी समाधान खुले स्रोत हैं। इस प्रश्न सूत्र में केवल एक अन्य बंद स्रोत समाधान है, जिसे मैंने भी अस्वीकृत कर दिया है। यह प्रश्न रेडगेट द्वारा इस वर्ष के शुरू में वापस लेने के निर्णय से पहले पूछा गया था और विशेष रूप से खुले स्रोत के विकल्प के लिए पूछता है। मुझे और क्या करने की आवश्यकता है?
मैजिकएंडी

9
@MagicAndi स्टॉप की शिकायत एक शुरुआत होगी। मुझे एक मुफ्त विकल्प की तलाश करते हुए Google से यह धागा मिला। अगर यह खुला स्रोत है या नहीं तो मैं कम देखभाल नहीं कर सकता। @Ferdinand dotPeek लिंक के लिए धन्यवाद, आशाजनक लगता है।
विंस्टन स्मिथ

15

टेलरिक ने आज अपने स्वयं के विघटन उपकरण, जस्टडेकम्पाइल का बीटा जारी किया । बंद स्रोत, लेकिन मुक्त और आशाजनक दिखता है।


रे, क्षमायाचना, लेकिन ग्रेवुल्फ जवाब के दृष्टिकोण के अनुरूप होना, मैं इस जवाब को नीचा दिखाने जा रहा हूं। यह प्रश्न विशेष रूप से ओपन सोर्स विकल्प के लिए है। .NET समुदाय ने बंद स्रोत समाधान पर भरोसा करके खुद को इस गड़बड़ी में जाने की अनुमति दी; हमें भविष्य में इससे बचना चाहिए, चाहे जो कोई भी उपकरण प्रदान कर रहा हो। -1
मैजिकएंडी

रे, मेरा कलियो सुझाव भी बंद स्रोत उपयोगिता है। कृपया बेझिझक नीचे उतरो - मैं इसके लायक हूँ! दुर्भाग्य से, आप अपने स्वयं के उत्तर पर या तो ऊपर या नीचे वोट नहीं कर सकते।
मैजिकएंडी

1
@MagicAndi - अपने उत्तर को हटाने के बजाय इसे हटाना आसान होगा। यदि आपको नहीं लगता कि यह कोई मूल्य जोड़ता है तो आपके पास "चले गए" बनाने की शक्ति है।
जिपरसन

1
इस उत्तर को न निकालें / नीचे न करें। नि: शुल्क विकल्प के बारे में अन्य SO प्रश्न मध्यस्थों द्वारा इस प्रश्न के "डुप्लिकेट" के रूप में बंद किए जा रहे हैं! इसलिए जानकारी यहाँ होने लायक है।
एलेक्स

JustDecompile एक शर्मनाक छोटी गाड़ी है जो हर समय दुर्घटनाग्रस्त होती है और बहुत सारे अपवाद दिखाती है जहां कोड होना चाहिए। इसके अलावा यह बहुत धीमा है। .NET परावर्तक उस बकवास से बेहतर है!
एल्म्यू

12

ILSpy महान काम करता है!

जहां तक ​​मैं बता सकता हूं कि यह सब कुछ करता है जो रिफ्लेक्टर ने किया और वही दिखता है।


10

वास्तव में, मुझे पूरा यकीन है कि रिफ्लेक्टर को कुछ डीकॉम्पेलर कार्यक्षमता के साथ डिस्सेम्बलर माना जाता है। Disassembler क्योंकि यह विधानसभा की फ़ाइल से बाइट्स को पढ़ता है और इसे असेंबली भाषा में परिवर्तित करता है (इस मामले में ILasm)। Decompiler की कार्यक्षमता यह आईएल को अच्छी तरह से ज्ञात पैटर्न (जैसे भाव और कथन) को पार्स करके प्रदान करता है जो तब उच्च स्तर की भाषाओं जैसे सी #, वी.बी.नेट, आदि में अनुवादित हो जाते हैं। रिफ्लेक्टर के लिए ऐडिन एपी आपको अपना स्वयं का अनुवादक लिखने की अनुमति देता है यदि आप चाहते हैं ... हालांकि यह कैसे आईएल अभिव्यक्ति पेड़ में पार्स करता है का जादू एक निकट संरक्षित रहस्य है।

मैं ऊपर बताई गई तीन चीजों में से किसी को भी देखने की सलाह दूंगा यदि आप यह समझना चाहते हैं कि IL disassembler कैसे काम करते हैं: Dile, CCI और मोनो इस सामान के लिए सभी अच्छे स्रोत हैं।

मैं अत्यधिक एक्मा 335 कल्पना और सर्ज लिडिन की पुस्तक भी प्राप्त करने की सलाह देता हूं।


यह लिंक नीचे लगता है
Lyra

हाँ, क्षमा करें, मैंने पिछले साल उस साइट को नीचे ले लिया था और इसे प्रतिस्थापित नहीं किया।
जेसन हेली

8

मुख्य कारण मैंने रिफ्लेक्टर का इस्तेमाल किया (और, मुझे लगता है कि, ज्यादातर लोगों ने इसका इस्तेमाल किया था) इसका मुख्य कारण इसके डिकंपाइलर के लिए था: यह एक विधि के आईएल को स्रोत कोड में अनुवाद कर सकता है।

उस गिनती पर, मोनोफ्लेक्टर देखने का प्रोजेक्ट होगा। यह सेसिल का उपयोग करता है, जो परावर्तन करता है, और सेसिल.डेकोम्पाइलर, जो अपघटन करता है। लेकिन मोनोफ्लेक्टर दोनों पुस्तकालयों के ऊपर एक यूआई को परत करता है, जिससे आपको एपीआई का उपयोग करने का एक बहुत अच्छा विचार देना चाहिए।

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


5

ठीक है, रिफ्लेक्टर स्वयं एक .NET असेंबली है, ताकि आप रिफ्लेक्टर में Reflector.exe को खोलकर देख सकें कि यह कैसे बनाया गया है।


14
नहीं, आप नहीं कर सकते। रिफ्लेक्टर बाधित है।
जेफ येट्स

14
आप रिफ्लेक्टर में रिफ्लेक्टर नहीं खोल सकते? मैंने अभी-अभी यह किया है - ओफ़्फ़ैकेशन केवल आईएल की पठनीयता को चोट पहुँचाता है क्योंकि पहचानकर्ता और प्रकार के नाम मंगवाए जाते हैं, लेकिन इसका मतलब यह नहीं है कि आप इसे अलग नहीं कर सकते।
एंड्रयू हरे

13
एंड्रयू - जब एक छेद में, खुदाई बंद करो ...
मैजिकएंडी

2
हम्म ... मेरे पास संस्करण 5.1.6.0 है और मैं स्रोत को ठीक-ठीक देख सकता हूं - केवल पहचानकर्ता के नाम ही बाधित हैं। बिल्कुल सही नहीं है, लेकिन मैं अभी रिफ्लेक्टर के सी # स्रोत को देख रहा हूं। :)
एंड्रयू हरे

7
@Andrew हरे: यदि आप रिफ्लेक्टर में परावर्तक के माध्यम से विधि कार्यान्वयन को देखने की कोशिश करते हैं, तो आप देखेंगे कि "यह बाधित है" और यह इसे नहीं दिखाएगा, तो आप रिफ्लेक्टर का उपयोग नहीं कर सकते। इसके अलावा, ओपी के साथ ओपी क्या चाहता है, इसके बारे में पांडित्यपूर्ण होना एक हारी हुई लड़ाई है।
जेफ येट्स

3

मैं वर्तमान में असेंबली एनालाइज़र नामक एक ओपन-सोर्स डिस्सेम्बलर / डिकंपाइलर पर काम कर रहा हूं। यह विधियों के लिए स्रोत कोड बनाता है, विधानसभा मेटाडेटा और संसाधनों को प्रदर्शित करता है, और आपको निर्भरता के माध्यम से चलने की अनुमति देता है।

इस परियोजना को CodePlex => http://asmanalyzer.codeplex.com/ पर होस्ट किया गया है


1

रिफ्लेक्टर टूल रिफ्लेक्शन का उपयोग करता है।  - जाहिरा तौर पर यह सही नहीं है।

आपने दो चीजों के लिए कहा - कोड जो दर्शाता है कि रिफ्लेक्टर क्या करता है, और रिफ्लेक्टर का विकल्प भी।

यहाँ एक उदाहरण है, रिफ्लेक्टर क्या करता है, से बहुत सरल है, लेकिन यह प्रतिबिंब की तकनीक को दर्शाता है: TypeView.cs

मेरे पास एक ओपन-सोर्स रिफ्लेक्टर प्रतिस्थापन के लिए कोई सुझाव नहीं है।


उह, यदि "प्रतिबिंब" के साथ आप .NET फ्रेमवर्क के "System.Reflection" का उल्लेख करते हैं, तो मुझे बहुत संदेह होगा।
क्रिश्चियन.के।

3
@ Christian.K: नहीं, रिफ्लेक्टर System.Reflectionफ्रेमवर्क में उपयोग नहीं करता है , रोएडर ने विधानसभा लोडिंग और अनलोडिंग के मुद्दों के कारण बहुत जल्दी बताया।
कैस्पर ओने

@casperOne, मुझे ठीक से पता नहीं है कि .NET रिफ्लेक्टर आंतरिक रूप से कैसे काम करता है, लेकिन System.Reflection.NET रिफ्लेक्टर के शुरुआती दिनों से ही नाम स्थान बढ़ाया गया है। अब यह केवल प्रतिबिंब-संदर्भ में लोडिंग और अनलोडेड असेंबलियों का समर्थन करता है: stackoverflow.com/questions/225330/…
ड्रू नोक

1
@ ड्रू नोक: यह सच है, लेकिन रोएडर ने कभी भी (मेरी जानकारी में) यह नहीं कहा कि यह बदलाव होने के बाद वह रिफ्लेक्शन में वापस चला गया।
कैस्पर ओने
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.