2010-12-01 20 views
6

मैं सोच रहा था कि मैं एक छोटा ऐप कैसे बना सकता हूं जो मेरा इनपुट स्वीकार करेगा और इसे कोड के रूप में चलाएगा। एक आईडीई बनाने के समान प्रकाश, लेकिन मैं अब तक नहीं जाना चाहता, लेकिन मैं चाहता हूं कि यह एफसीएल का उपयोग करे। तो अगर मैं एक पाठ बॉक्स था और मैं में मुक्का मारा:सी #: मैं एक प्रोग्राम कैसे बना सकता हूं जो कोड को चलाएगा जिसे मैं एक टेक्स्ट बॉक्स में घुमाता हूं?

string x = "hello"; 
int myLength; 

myLength = x.length; 

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

+1

में चल पाने के लिए होगा तुम सिर्फ उपकरण चाहते हैं, डाउनलोड http://www.linqpad.net/ – TrueWill

उत्तर

0

आप this पिछली SO पोस्ट पर एक नज़र डालकर शुरू कर सकते हैं।

http://www.codeproject.com/KB/vb/DotNetCompilerArticle.aspx

+1

CodeDom अच्छा नहीं है इस मामले में दृष्टिकोण। http://stackoverflow.com/questions/2366921/reflection-emit-vs-codedom देखें –

3

यहाँ CompilerServices नाम स्थान पर एक अच्छा कड़ी है।

एक व्याख्या की गई भाषा में, कच्चे पाठ को भाषा के रूप में पार्स करना और परिणामों को देखना काफी आसान है।

शायद आप जावास्क्रिप्ट या पर्ल में खुश टाइपिंग और उसको व्याख्या कर रहे हैं?

0

सी # में यह, इतना आसान नहीं होगा, क्योंकि सी # एक संकलित भाषा है, न कि व्याख्या की भाषा है:

0

पहले से दिए गए उत्तरों के अलावा, PowerShell आपको फ्लाई पर सी # कोड (या फ़ाइल से, यदि चाहें) चलाने की अनुमति देता है।

3

आप CSScript

http://www.csscript.net/

इस्तेमाल कर सकते हैं अपनी वेब साइट से:

dynamic script = CSScript.LoadCode(@"using System; 
           public class Script 
           { 
            public void SayHello(string greeting) 
            { 
             Console.WriteLine(greeting); 
            } 
           }") 
           .CreateObject("*"); 
script.SayHello("Hello World!"); 
3

मुझे लगता है कि आप जो खोज रहे हैं LINQPad है। यह आपको चीजों का परीक्षण करने के लिए छोटे एक-ऑफ कंसोल ऐप्स बनाने के ऊपरी हिस्से के बिना कोड के छोटे बिट्स चलाने देगा। बस मस्ती के लिए मैंने निम्नलिखित लिखा है जो टेक्स्टबॉक्स में जो कुछ भी संकलित और निष्पादित करेगा।

void Main() 
{ 
    TextBox textBox = new TextBox() 
    { 
     Multiline = true, 
     Size = new Size(200, 60), 
     Text = @"string x = ""hello"";int myLength;myLength = x.Length;MessageBox.Show(myLength.ToString());" 
    }; 
    Button button = new Button() 
    { 
     Location = new Point(0, 60) 
    }; 
    button.Click += new EventHandler(delegate(object sender, EventArgs e) 
     { 
      var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } }); 
      var parameters = new CompilerParameters(new[] { "mscorlib.dll", "System.dll", "System.Windows.Forms.dll" }, "foo.exe", true); 
      parameters.GenerateExecutable = true; 
      CompilerResults results = csc.CompileAssemblyFromSource(parameters, 
      @" 
      using System.Windows.Forms; 

      namespace ConsoleApplication 
      { 
       class Program 
       { 
        static void Main(string[] args) 
        { 
         " + 
         textBox.Text 
         + @" 
        } 
       } 
      } 
      ");     
      Process proc = Process.Start("foo.exe"); 
     } 
    ); 

    Form f = new Form 
    { 
     Controls = { textBox, button } 
    }; 
    Application.Run(f); 
} 

मैं वास्तव में LINQPad में लिखा था लेकिन यह बहुत आसान Visual Studio

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