使用 csc.exe 建置命令列
更新:2007 年 11 月
您可以在命令列輸入 C# 編譯器的可執行檔名稱 (csc.exe) 以叫用該編譯器。如果您使用 Visual Studio 命令提示字元 (捷徑位於 [開始] 功能表的 [Visual Studio Tools] 下),就會自動設定所有必要的環境變數。否則,您必須調整路徑,以便從電腦的任何子目錄叫用 (Invoke) csc.exe。如果不使用 Visual Studio 命令提示字元,則必須執行 vsvars32.bat 設定適當的環境變數,以支援命令列建置。如需 vsvars32.bat 的詳細資訊,請參閱 HOW TO:設定環境變數。
如果您在只有 Windows Software Development Kit (SDK) 的電腦上工作,而且您使用 [SDK 命令提示字元] (可從 [Microsoft .NET Framework SDK] 功能表選項選取),您就可以在命令列上使用 C# 編譯器 (Compiler)。
若要從開發環境進行建置,請參閱 HOW TO:準備和管理組建。
您也可以使用 MSBuild 以程式設計的方式建置 C# 程式。如需詳細資訊,請參閱 MSBuild。
csc.exe 可執行檔通常位於系統目錄下的 Microsoft.NET\Framework\<版本> 資料夾中。它的位置可能會依任何個別電腦的實際組態而有所不同。如果電腦上安裝了一個以上的 .NET Framework 版本,則電腦上會出現這個可執行檔的多個版本。如需這類安裝的詳細資訊,請參閱安裝多個版本的 .NET Framework。
這個主題涵蓋下列內容:
命令列語法規則
範例命令列
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)。