Tạo Một Trình Biên Dịch C# đơn Giản Bằng C# – C# Simple Complier
Có thể bạn quan tâm
![]()
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
, 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.
![]()
– 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:
![]()
– 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.803673Rate this:
Chia sẽ bài viết này cho bạn bè
- Share
- X
Related
Từ khóa » Trình Biên Dịch C# Là Gì
-
#C Là Gì? Ưu điểm, ứng Dụng Và Quá Trình Biên Dịch #C - ITNavi
-
Cấu Trúc Tạo Chương Trình, Biên Dịch Và Thực Thi Chạy Trong C#
-
Sự Khác Nhau Giữa Trình Biên Dịch Và Trình Thông Dịch - Viblo
-
C Sharp (ngôn Ngữ Lập Trình) – Wikipedia Tiếng Việt
-
[PDF] BÀI 1 GIỚI THIỆU .NET VÀ C# - Topica
-
C# Là Gì? Tìm Hiểu Về Ngôn Ngữ Lập Trình C# - CodeGym
-
C# Sharp Là Gì? Đặc Trưng Của Lập Trình C# Bạn Nên Biết
-
Biên Dịch Mã Nguồn C# Từ Command Line - ChienTX
-
Giới Thiệu C# Và Viết Chương Trình CS đầu Tiên
-
Common Language Runtime (CLR) Trong C#
-
Top 15 Công Cụ Lập Trình C# - VinBigdata
-
Giới Thiệu Lập Trình C# | Comdy
-
Hoc Kinh Nghiệm Lập Trình C# Tại Stanford - Học để Làm Việc
-
Tại Sao Bạn Nên Chọn Học Lập Trình C# Cơ Bản?