Biên dịch / Thực thi tệp nguồn C # trong Dấu nhắc lệnh


Câu trả lời:


139

CSC.exe là trình biên dịch CSharp có trong .NET Framework và có thể được sử dụng để biên dịch từ dấu nhắc lệnh. Đầu ra có thể là ".exe" có thể thực thi được, nếu bạn sử dụng "/ target: exe" hoặc DLL; Nếu bạn sử dụng / target: library, CSC.exe được tìm thấy trong thư mục .NET Framework,

ví dụ: đối với .NET 3.5 , c:\windows\Microsoft.NET\Framework\v3.5\.

Để chạy, trước tiên, hãy mở một dấu nhắc lệnh, nhấp vào "Bắt đầu", sau đó nhập cmd.exe.
Sau đó, bạn có thể phải cd vào thư mục chứa các tệp nguồn của bạn.

Chạy trình biên dịch C # như thế này:

  c:\windows\Microsoft.NET\Framework\v3.5\bin\csc.exe 
            /t:exe /out:MyApplication.exe MyApplication.cs  ...

(tất cả trên một dòng)

Nếu bạn có nhiều hơn một mô-đun nguồn được biên dịch, bạn có thể đặt nó trên cùng một dòng lệnh. Nếu bạn có các hội đồng khác để tham khảo, sử dụng /r:AssemblyName.dll.

Đảm bảo bạn có một phương thức Main () tĩnh được định nghĩa trong một trong các lớp của bạn, để hoạt động như "điểm vào".

Để chạy EXE kết quả, gõ MyApplication, theo sau bằng <ENTER>cách sử dụng dấu nhắc lệnh.

Bài viết này về MSDN đi sâu vào chi tiết hơn về các tùy chọn cho trình biên dịch dòng lệnh. Bạn có thể nhúng tài nguyên, đặt biểu tượng, ký hợp đồng - mọi thứ bạn có thể làm trong Visual Studio.

Nếu bạn đã cài đặt Visual Studio, trong "Menu bắt đầu"; trong Visual Studio Tools, bạn có thể mở "Dấu nhắc lệnh của Visual Studio", nó sẽ thiết lập tất cả các biến môi trường và đường dẫn cần thiết để biên dịch dòng lệnh.

Trong khi nó rất tiện dụng để biết điều này, bạn nên kết hợp nó với kiến thức về một số loại công cụ xây dựng như Nant , MSBuild , FinalBuilder vv Những công cụ cung cấp một môi trường xây dựng hoàn chỉnh, không chỉ là trình biên dịch cơ bản.

Trên máy Mac

Trên máy Mac, cú pháp tương tự, chỉ có trình biên dịch C sharp được đặt tên csc:

$ csc /target:exe /out:MyApplication.exe MyApplication.cs ...

Sau đó để chạy nó:

$ mono MyApplication.exe

1
nếu tôi nhớ chính xác, bạn chỉ có thể biên dịch và exe nếu bạn có một lớp tĩnh với phương thức Main.
cjk

Trình biên dịch cảnh báo bạn những ngày này nếu bạn không có, nhưng điểm tốt tôi sẽ thêm nó vào câu trả lời, cảm ơn.
Tro

5
Điều này thật tuyệt. Cần thiết để biên dịch một ứng dụng C # nhỏ và không có hứng thú với việc chạm vào Visual Studio. Cảm ơn!
ColinM

1
Trong Win10, tôi tìm thấy của tôi ở đó:C:\Program Files (x86)\MSBuild\14.0\Bin\csc.exe
TrakJohnson

17

Một cách khác để biên dịch các chương trình C # (không sử dụng Visual Studio hoặc không cài đặt nó) là tạo một biến người dùng trong các biến môi trường, cụ thể là "PATH".

Sao chép đường dẫn sau trong biến này:

"C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319"

hoặc tùy thuộc vào .NET mà PC của bạn có.

Vì vậy, bạn không cần phải đề cập đến toàn bộ đường dẫn mỗi khi bạn biên dịch mã. Đơn giản chỉ cần sử dụng

"C: \ Users \ UserName \ Desktop> csc [tùy chọn] filename.cs"

hoặc bất cứ nơi nào đường dẫn mã của bạn là.

Bây giờ bạn tốt để đi.


15

Bạn có thể biên dịch chương trình C #:

c:> csc Hello.cs

Bạn có thể chạy chương trình

c:> xin chào


1
Nếu tôi sử dụng các thư viện bổ sung thì sao? Tôi đang gặp lỗi mà không tìm thấy hội đồng ... Làm thế nào để sửa lỗi này?
Nikas alias 17/03/18

Trước tiên, bạn phải chắc chắn rằng đường dẫn đến trình biên dịch nằm trong các biến môi trường.
Bà Lyngdoh

@ NikasŽalias. Ví dụ: csc Hello.cs -langversion: mới nhất -reference: System.Net.Http.dll
Alex Nolasco

7

Mặc dù nó chắc chắn là một điều tốt khi biết cách xây dựng tại dòng lệnh, nhưng đối với hầu hết các công việc, có thể sử dụng IDE dễ dàng hơn. Phiên bản C # express là miễn phí và rất tốt cho tiền ;-p

Ngoài ra, những thứ như snippy có thể được sử dụng để chạy các đoạn mã C #.

Cuối cùng - lưu ý rằng dòng lệnh được triển khai cụ thể; đối với MS, nó là csc; đối với mono , nó là gmcsvà bạn bè .... Tương tự như vậy, để thực thi: nó chỉ là "exename" cho phiên bản MS, nhưng thường là "mono exename" cho mono.

Cuối cùng, nhiều dự án được xây dựng với các công cụ xây dựng kịch bản; MSBuild , NAnt , v.v.


3
Tôi sử dụng IDE. Nhưng tôi cần phải biết. Nó chỉ không cảm thấy đúng không biết! Cảm ơn vì ý kiến ​​của bạn.
DragonBorn

1
+1 cho NAnt! LINQPad rất tốt để thử nghiệm các đoạn mã: linqpad.net
TrueWill

7

Đối với phiên bản mới nhất, trước tiên hãy mở cửa sổ Powershell, đi tới bất kỳ thư mục nào (ví dụ c:\projects\) và chạy như sau

# Get nuget.exe command line
wget https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile nuget.exe

# Download the C# Roslyn compiler (just a few megs, no need to 'install')
.\nuget.exe install Microsoft.Net.Compilers

# Compiler, meet code
.\Microsoft.Net.Compilers.1.3.2\tools\csc.exe .\HelloWorld.cs

# Run it
.\HelloWorld.exe    

Một ví dụ HelloWorld.cs

using System;

public class HelloWorld {
    public static void Main() 
    {
        Console.WriteLine("Hello world!");
    }
}

Bạn cũng có thể thử trình thông dịch C # mới;)

.\Microsoft.Net.Compilers.1.3.2\tools\csi.exe
> Console.WriteLine("Hello world!");
Hello world!

6

Dưới đây là cách cài đặt MSBuild với trình biên dịch C # 7.0 độc lập không còn được gói trong .Net Framework 4.7 mới nhất:

Có thể cài đặt trình biên dịch C # mà không cần Visual Studio không?

Sau đó chạy đi

"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn\csc.exe" MyApplication.cs

để biên dịch tập tin nguồn đơn để thực thi.

Cũng lưu ý rằng .Net Core không hỗ trợ biên dịch tệp nguồn đơn mà không có dự án cấu hình sẵn.


5

LinqPad là một cách nhanh chóng để kiểm tra một số mã C # và miễn phí.


2

Bạn có thể xây dựng các tệp lớp của mình trong dấu nhắc Lệnh VS (để tất cả các biến môi trường được yêu cầu được tải), chứ không phải cửa sổ lệnh mặc định của Windows.

Để biết thêm về xây dựng dòng lệnh với csc.exe (trình biên dịch), xem bài viết này .


2

Nếu bạn đã cài đặt Visual Studio thì bạn có Dấu nhắc lệnh dành cho nhà phát triển cho VS. Bạn có thể dễ dàng xây dựng chương trình của mình bằng csclệnh và chạy ứng dụng của bạn với tên của ứng dụng bên trong dấu nhắc lệnh của nhà phát triển.

Bạn có thể mở dấu nhắc lệnh của Nhà phát triển như được đưa ra dưới đây.

Bắt đầu => Dấu nhắc lệnh nhà phát triển cho VS

Hi vọng điêu nay co ich!


2

Thêm vào đường dẫn

C:\Windows\Microsoft.NET\Framework\v3.5

Để biên dịch:

csc file.cs

Để thực thi:

file

1

Một khi bạn viết mã c # và lưu nó. Bạn có thể sử dụng dấu nhắc lệnh để thực thi nó giống như các mã khác.

Trong dấu nhắc lệnh, bạn nhập thư mục tập tin của bạn vào và gõ

Để biên dịch:

mcs yourfilename.cs

Để thực thi:

mono yourfilename.exe 

nếu bạn muốn tệp .exe của bạn khác với một tên khác, hãy nhập

Để biên dịch:

mcs yourfilename.cs -out:anyname.exe 

Để thực thi:

mono anyname.exe 

Điều này sẽ giúp!


1

Trong các hệ thống Windows, sử dụng lệnh csc <filname>.cstrong dấu nhắc lệnh trong khi thư mục hiện tại nằm trong Microsoft Visual Studio \ <Year> \ <Version>

Có hai cách:

Sử dụng dấu nhắc lệnh:

  1. Bắt đầu -> Dấu nhắc lệnh
  2. Thay đổi thư mục thành thư mục Visual Studio, sử dụng lệnh: cd C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ <Version>
  3. Sử dụng lệnh: csc /.cs

Sử dụng Dấu nhắc nhà phát triển:

  1. Bắt đầu -> Dấu nhắc lệnh dành cho nhà phát triển cho VS 2017 (Tại đây thư mục đã được đặt thành thư mục Visual Studio)

  2. Sử dụng lệnh: csc /.cs

Hy vọng nó giúp!


0

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn

đây là nơi bạn có thể tìm thấy trình biên dịch c # hỗ trợ c # 7 nếu không nó sẽ sử dụng trình biên dịch .net 4 chỉ hỗ trợ c # 5



0

Tôi đã viết một tệp bó CompileCS.cmdcho phép biên dịch (và tùy chọn chạy) tệp C #, bạn có thể tìm thấy câu trả lời đầy đủ bao gồm chương trình bó 'CompileCS' tại đây .

Cách sử dụng của nó rất đơn giản:

CompileCS /run GetDotNetVersion.cs[arg1] ... [arg9]

sẽ biên dịch và chạy GetDotNetVersion.cs - nếu bạn chỉ muốn biên dịch nó, hãy bỏ qua /runtham số.

Ứng dụng console GetDotNetVersion.csđược lấy từ câu trả lời này .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.