मैं described here के रूप में रोसलिन स्रोत का निर्माण किया है के माध्यम से कदम।रोसलिन सी # संकलक
मैं सी # संकलक में एक ब्रेकपाइंट जोड़ सकते हैं और इस सरल कार्यक्रम के compliation से निकलने के लिए करना चाहते हैं:
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
var result = 1 + 2;
Console.WriteLine(result);
}
}
}
मैं एक ब्रेकपाइंट कहाँ सेट करना चाहिए? यह संकलन प्रक्रिया में जल्दी होना चाहिए क्योंकि मैं पार्सिंग और यहां तक कि लेक्सिंग के माध्यम से कदम उठाना चाहता हूं।
अगर मैं स्टार्टअप परियोजना के रूप में CompilerExtension सेट और F5 (प्रारंभ डिबगिंग) मारा, विजुअल स्टूडियो की एक प्रति नव निर्मित संकलक चल रहा शुरू की है। जब भी मैं कंपाइलर के माध्यम से कदम उठाना चाहता हूं, तो मैं विजुअल स्टूडियो का एक नया उदाहरण लॉन्च करने से बचना चाहता हूं। एक छोटा प्रोग्राम स्थापित करने का एक अच्छा तरीका क्या है जो उपर्युक्त स्रोत पर संकलक कोड को सीधे आमंत्रित करता है?
आप रोज़लिन समाधान में एक नई परियोजना जोड़ सकते हैं, सही माइक्रोसॉफ्ट के संदर्भ जोड़ सकते हैं। कोडएनालिसिस परियोजनाओं और फिर 'CSharpSyntaxTree.ParseText()' और 'संकलन.इमिट() 'पर कॉल करें। फिर आप अपनी रुचि रखने वाले पार्सिंग या उत्सर्जित कोड के माध्यम से कदम उठा सकते हैं। – JoshVarty
धन्यवाद जोश! मैंने एक उत्तर जोड़ा है जो 'पारसेक्स्ट' प्रदर्शित करता है। @ जोशवर्टी – dharmatech
मैंने कुछ ब्लॉग लेख लिखा है जो @JoshVarty यहां और उसके ब्लॉग लेखों में से एक के आधार पर कुछ हद तक लिखा है। Roslyn internals के साथ खेलने के इच्छुक किसी के लिए यह रुचि हो सकती है। आप भी System.Reflection के लिए NuGet पैकेज के लिए एक संदर्भ जोड़ने की जरूरत है https://renniestechblog.com/information/33-modifying-roslyn-step-1-initial-test – RenniePet