Tạo Một Trình Biên Dịch C# đơn Giản Bằng C# – C# Simple Complier

images

Việc tạo ra một trình biên dịch vốn dĩ rất khó khăn. Nhưng với C# bạn có thể tạo ra một trình biên dịch nhỏ để biên dịch các đoạn mã ngắn viết bằng C#. Điều này nghe có vẻ buồn cười Winking smile, nhưng thực sự việc thực hiện này khá đơn giản, .NET đã cung cấp cho chúng ta những công cụ cần thiết để tạo ra nó. Bây giờ thực hiện thôi.

1. Giới thiệu

Ứng dụng mà chúng ta sắp tạo ra là một ứng dụng cực kỳ đơn giản viết bằng mã nguồn C#. Ứng dụng này có khả năng biên dịch những đoạn mã C# đơn giản. Và những gì chúng ta cần có để có một trình biên dịch C# đơn giản là:

  • Tạo một CSharpCodeProvider ( VBCodeProvidercho Visual Basic).
  • Giao diện cho ICodeCompiler.
  • Biên dịch mã nguồn bằng cách sử dụng phương thức CompileAssemblyFromSource của giao diện ICodeCompiler.
  • Tiến trình CompilerResults.
  • Thực thi ứng dụng nếu không có lỗi khi biên dịch.

2. Code chương trình

–  Chương trình được xây dựng tương đối đơn giản: Chỉ gồm 3 TextBox (1 TextBox chứa nội dung code – txtSourceCode, 1 TextBox chứ tên của ứng dụng tạo ra – txtAppName, 1 TextBox chứ tên class chính – txtMainClass), 1 checkBox để xác định có kiểm tra thông tin Debug hay không. Và một Button – btnComplier để biên dịch code của chương trình.

–  Phải sử dụng các khải báo using dưới đây:

using System.Diagnostics; using System.CodeDom.Compiler; using System.Reflection; using Microsoft.CSharp;

–  Dưới đây là đoạn code của chính của chương trình được viết trong sự kiện button Complier and Execute được click.

private void btnComplier_Click(object sender, EventArgs e) { CSharpCodeProvider codeProvider = new CSharpCodeProvider(); //Microsoft.VisualBasic.VBCodeProvider ICodeCompiler compiler = codeProvider.CreateCompiler(); CompilerParameters parameters = new CompilerParameters(); parameters.GenerateExecutable = true; if (txtAppName.Text == "") { System.Windows.Forms.MessageBox.Show(this, "Tên ứng dụng không thể rỗn"); return; } parameters.OutputAssembly = txtAppName.Text.ToString(); if (txtMainClass.Text == "") { System.Windows.Forms.MessageBox.Show(this, "Tên class chính không thể rỗn."); return; } parameters.MainClass = txtMainClass.Text; parameters.IncludeDebugInformation = cbxDebugInfo.Checked; foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) { parameters.ReferencedAssemblies.Add(asm.Location); } String code = txtSourceCode.Text.ToString(); CompilerResults results = compiler.CompileAssemblyFromSource(parameters, code); if (results.Errors.Count > 0) { string errors = "Biên dịch lỗi: \n"; foreach (CompilerError err in results.Errors) { errors += err.ToString() + "\n"; } System.Windows.Forms.MessageBox.Show(this, errors, "Lỗi không thể biên dịch chương trình"); } else { try { if (!System.IO.File.Exists(txtAppName.Text.ToString())) { MessageBox.Show(String.Format("Không thể tìm thấy {0}", txtAppName), "Chương trình không thể thực thi.", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } ProcessStartInfo pInfo = new ProcessStartInfo(txtAppName.Text.ToString()); Process.Start(pInfo); } catch (Exception ex) { MessageBox.Show(String.Format("Lỗi khi thực thi {0}", txtAppName) + ex.ToString(), "Không thể thực thi.", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }

3.  Giao diện và source code chương trình:

–  Giao diện chính của chương trình sẽ như hình bên dưới.

image

–  Khi click vào button Complier and Execute đoạn chương trình như hình trên thì chương trình sẽ chạy ra kết quả như sau:

image

–  Click vào đây để download source code chương trình simple complier C# viết trên Visual studio 2010 (C#)

–  Chúc thành công!

(Tham khảo codeproject.com)

10.869661 106.803673

Rate this:

Chia sẽ bài viết này cho bạn bè

  • Share
  • Facebook
  • Email
  • X
  • Print
Like Loading...

Related

Từ khóa » Trình Biên Dịch C# Là Gì