共用方式為


使用 csc.exe 建置命令列

您可以在命令列輸入 C# 編譯器的可執行檔名稱 (csc.exe) 以叫用該編譯器。

如果您使用 [Visual Studio 命令提示字元] 視窗,所有必要的環境變數會自動完成設定。 在 Windows 7 中,您可以開啟 Microsoft Visual Studio Version\ Visual Studio 工具資料夾,在 [啟動] 功能表中存取這個視窗。 在 Windows 8 中, Visual Studio 命令提示字元被命名為 [VS2012 開發命令提示字元],您可以在開始畫面找到它。

如果您使用標準命令提示字元視窗,您必須調整路徑,才能在電腦上任何子目錄呼叫 csc.exe 檔案。 您也必須執行 vsvars32.bat 設定適當的環境變數以支援命令列組建。 如需 vsvars32.bat 的詳細資訊(包括如何能找到並執行它),請參閱 如何:為 Visual Studio 命令列設定環境變數

如果您在只有 Windows Software Development Kit (SDK) 的電腦上工作,您可以在 [SDK 命令提示字元] (可從 [Microsoft .NET Framework SDK] 功能表選取)上使用 C# 編譯器。

您也可以使用 MSBuild 建置 C# 程式。 如需詳細資訊,請參閱MSBuild

csc.exe 可執行檔通常位於系統目錄下的 Microsoft.NET\Framework\Version 資料夾中。 它的位置可能會依任何個別電腦的實際組態而有所不同。 如果電腦上安裝多個版本的 .NET Framework ,您將看到這個檔案的多個版本。 如需這類安裝的詳細資訊,請參閱判斷安裝的 .NET Framework 版本

提示

當您使用 Visual Studio IDE 建立專案時,您可以在 [輸出] 視窗中顯示 [csc] 命令及其關聯的編譯器選項。若要顯示這項資訊,請依照 如何:檢閱、儲存和設定建置記錄檔 中的指示,調整紀錄檔案的等級為 [一般] 或 [詳細]。在您重新建置專案之後,請搜尋 [輸出] 視窗的 [csc] ,以檢視 C# 編譯器的呼叫過程。

本主題內容

  • 命令列語法規則

  • 命令列範例

  • C# 編譯器和 C++ 編譯器輸出的不同之處

C# 編譯器的命令列語法規則

C# 編譯器會使用下列規則,解譯在作業系統命令列上指定的引數:

  • 引數會以空白或定位鍵的泛空白字元 (White Space) 進行分隔。

  • 插入號字元 (^) 不會辨識為逸出字元 (Escape Character) 或分隔符號。 這個字元先由作業系統中的命令列剖析器 (Parser) 處理,再傳遞給程式中的 argv 陣列。

  • 用雙引號括住的字串 ("string") 會解譯成單一引數,不論其內是否包含泛空白字元 (White Space)。 有引號的字串可以內嵌到引數中。

  • 前面有反斜線的雙引號 (\") 會解譯為常值雙引號字元 (")。

  • 反斜線會逐字解譯,除非後面緊接著雙引號。

  • 如果偶數數目的反斜線後面接著雙引號,在 argv 陣列中會用一條反斜線代表一對反斜線,雙引號則會轉譯為字串分隔符號。

  • 如果奇數數目的反斜線後面接著雙引號,在 argv 陣列中會用一條反斜線代表一對反斜線,雙引號則會使用剩下的反斜線「逸出」。 這樣會在 argv 中加入常值雙引號 (")。

C# 編譯器的簡單命令列

  • 編譯 File.cs 產生 File.exe:

    csc File.cs 
    
  • 編譯 File.cs 產生 File.dll:

    csc /target:library File.cs
    
  • 編譯 File.cs 和建立 My.exe:

    csc /out:My.exe File.cs
    
  • 在啟用最佳化和定義 DEBUG 符號情況下,編譯目前目錄中的所有 C# 檔案。 輸出為 File2.exe:

    csc /define:DEBUG /optimize /out:File2.exe *.cs
    
  • 編譯目前目錄中的所有 C# 檔案,產生 File2.dll 的偵錯版本。 不顯示標幟和警告:

    csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs
    
  • 將目前目錄中的所有 C# 檔案編譯成 Something.xyz (一個 DLL):

    csc /target:library /out:Something.xyz *.cs
    

C# 編譯器和 C++ 編譯器輸出的不同之處

叫用 C# 編譯器時並不會建立目的檔 (.obj),而是直接建立輸出檔。 因此,C# 編譯器並不需要連結器 (Linker)。

請參閱

工作

如何:顯示命令列引數 (C# 程式設計手冊)

如何:使用 foreach 存取命令列引數 (C# 程式設計手冊)

參考

依字母順序列出 C# 編譯器選項

依分類列出的 C# 編譯器選項

命令列引數 (C# 程式設計手冊)

Main() 傳回值 (C# 程式設計手冊)

概念

Main() 和命令列引數 (C# 程式設計手冊)

其他資源

C# 編譯器選項