Biên dịch mã nguồn C# từ Command Line


Hôm nay, chúng ta sẽ cùng nhau thực hiện công việc biên dịch một đoạn mã C# từ Command Line mà không có sự hỗ trợ của IDE Visual Studio. Tuy rằng việc biên dịch từ Command Line hầu như rất ít được thực hiện khi các bạn phát triển ứng dụng lớn, phức tạp nhưng qua bài viết này, hy vọng các bạn sẽ hiểu rõ hơn bản chất thật sự của quá trình biên dịch đó là như thế nào.

Ứng dụng của chúng ta cần thực hiện sẽ là một ứng dụng Console đơn giản có nhiệm vụ in ra màn hình ngày giờ hiện tại của hệ thống. Nội dung đoạn mã C# là như sau:

using System;
public class Sample
{
    public static void Main()
    {
        Console.WriteLine(DateTime.Now);
        Console.ReadKey();
    }
}

Chúng ta sẽ lưu đoạn mã trên trong tập tin Sample.cs tại một nơi nào đó trong máy tính (các bạn nhớ lưu ý đường dẫn đến tập tin này).

Bước tiếp theo, các bạn khởi động Visual Studio Command Prompt (Thông thường là nằm trong Start Menu –> All Programs –> Microsoft Visual Studio –> Visual Studio Tools). Chúng ta phải sử dụng Visual Studio Command Prompt bởi vì ứng dụng này đã thiết lập sẵn cho chúng ta đường dẫn đến các tập tin thực thi cho các lệnh tương ứng. Còn nếu như các bạn muốn sử dụng Command Line của Windows thì chúng ta cần phải thiết lập thêm biến môi trường cho Windows hiểu được các lệnh bạn sử dụng là lấy từ đâu.

Trong Visual Studio Command Prompt, các bạn thực hiện các lệnh chuyển đổi thư mục để đi đến thư mục chứa tập tin mã nguồn Sample.cs mà chúng ta đã tạo. Để thực hiện việc chuyển đổi giữa các thư mục thì các bạn sử dụng lệnh cd. Ví dụ chuyển sang thư mục C:\Windows thì các bạn gõ lệnh:

cd C:\Windows

Bây giờ chính là lúc chúng ta sẽ thực hiện công việc biên dịch mã nguồn thành chương trình để chạy. Các bạn gõ lệnh sau vào trong Visual Studio Command Prompt:

csc /target:exe /out:DateTimeApp.exe Sample.cs

Giải thích:

  • csc: Chương trình biên dịch, bắt buộc phải có
  • /target: chỉ định rằng chúng ta biên dịch ra ứng dụng Console (exe), một ứng dụng Windows (winexe), hay là một tập tin thư viện DLL (library)
  • /out: Nếu như chúng ta không sử dụng tham số này thì ứng dụng sau khi được biên dịch sẽ có tên trùng với tên file mã nguồn. Ở đây, chúng ta muốn sử dụng một tên khác nên có truyền giá trị cho đối số /out
  • Sample.cs: tên của tập tin chứa mã muốn biên dịch
    Nếu như chương trình C# của chúng ta có sử dụng thêm các tham chiếu (Reference) khác những tham chiếu mặc định (như System; System.Windows.Forms…) thì bắt buộc khi biên dịch, chúng ta phải chỉ định nơi chứa các tham chiếu này bằng sử dụng thêm đối số /reference trong câu lệnh biên dịch. Giả sử đoạn mã của chúng ta có tham chiếu đến namespace sau đây:
    using System.Collections.Generic;

Khi đó, để biên dịch được đoạn mã này, chúng ta phải dùng lệnh sau:

csc /target:exe /out:DateTimeApp.exe /reference:System.Collections.Generic.dll Sample.cs

Chúng ta đã bổ sung thêm tùy chọn /reference nhằm chỉ định tập tin dll sẽ được tham chiếu tới.

Kết luận: Như vậy là chúng ta đã có thể cơ bản biên dịch được một ứng dụng viết bằng ngôn ngữ lập trình C# mà không sử dụng bộ IDE Visual Studio. Tất nhiên, khi ứng dụng của chúng ta lớn và bao gồm nhiều thành phần liên kết với nhau thì rõ ràng việc sử dụng Command Line như thế này rất tốn thời gian mà không đem lại lợi ích nào cho lập trình viên. Do đó, tốt nhất là chúng ta nên sử dụng Visual Studio để lập trình ứng dụng, và đồng thời có thể tận dụng được những tính năng phong phú, mạnh mẽ được tích hợp trong Visual Studio. (Nếu như bạn chưa có Visual Studio 2010, tải ngay các bản Express tại đây: http://www.microsoft.com/express/Downloads/)

Tác giả: xuanchien

Tran Xuan Chien. Japan Advanced Institute of Science and Technology - Japan. Senior Developer - NUS Technology.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s