一直都是使用vs2008的IDE環境編寫c#程序,其實很方便。但有些時候我們也需要最原始的方法,例如手動調用編譯器來編譯程序,這樣做的目的很直接,讓自己更深入了解c#的編譯過程。
舉幾個簡單的例子
1.csc example.cs 直接生成c#控制台程序
2.csc /t:winexe winform.cs 生成c#窗體程序
3.csc /t:library dll.css 生成dll動態鏈接庫
Visual C# 2008 的編譯器選項
可以用csc -? 顯示出來^_^
- 輸出文件 -
/out:<文件> 指定輸出文件名(默認值: 包含主類的文件或第一個文件的基名稱)
/target:exe 生成控制台可執行文件(默認) (縮寫: /t:exe)
/target:winexe 生成 Windows 可執行文件 (縮寫: /t:winexe)
/target:library 生成庫 (縮寫: /t:library)
/target:module 生成能添加到其他程序集的模塊 (縮寫: /t:module)
/delaysign[+|-] 僅使用強名稱密鑰的公共部分對程序集進行延遲簽名
/doc:<文件> 要生成的 XML 文檔文件
/keyfile:<文件> 指定強名稱密鑰文件
/keycontainer:<字符串> 指定強名稱密鑰容器
/platform:<字符串> 限制可以在其上運行此代碼的平台: x86、Itanium、x64 或 anycpu。默認值為 anycpu。
- 輸入文件 -
/recurse:<通配符> 根據通配符規范,包括當前目錄和子目錄下的所有文件
/reference:<別名>=<文件> 使用給定的別名從指定的程序集文件引用元數據 (縮寫: /r)
/reference:<文件列表> 從指定的程序集文件引用元數據 (縮寫: /r)
/addmodule:<文件列表> 將指定的模塊鏈接到此程序集中
- 資源 -
/win32res:<文件> 指定 Win32 資源文件(.res)
/win32icon:<文件> 對輸出使用此圖標
/win32manifest:<文件> 指定 Win32 清單文件(.xml)
/nowin32manifest 不包括默認 Win32 清單
/resource:<資源信息> 嵌入指定的資源 (縮寫: /res)
/linkresource:<資源信息> 將指定的資源鏈接到此程序集 (縮寫: /linkres)
其中 resinfo 的格式是 <file>[,<string name>[,public|private]]
- 代碼生成 -
/debug[+|-] 發出調試信息
/debug:{full|pdbonly} 指定調試類型(“full”是默認類型,可以將調試程序附加到正在運行的程序)
/optimize[+|-] 啟用優化 (縮寫: /o)
- 錯誤和警告 -
/warnaserror[+|-] 將所有警告報告為錯誤
/warnaserror[+|-]:<警告列表> 將特定警告報告為錯誤
/warn:<n> 設置警告等級(0-4) (縮寫: /w)
/nowarn:<警告列表> 禁用特定的警告消息
- 語言 -
/checked[+|-] 生成溢出檢查
/unsafe[+|-] 允許“不安全”代碼
/define:<符號列表> 定義條件編譯符號 (縮寫: /d)
/langversion:<字符串> 指定語言版本模式: ISO-1、ISO-2 或 Default
- 雜項 -
@<文件> 有關更多選項,請閱讀響應文件
/help 顯示此用法信息 (縮寫: /?)
/nologo 取消編譯器版權信息
/noconfig 不要自動包含 CSC.RSP 文件
- 高級 -
/baseaddress:<地址> 要生成的庫的基址
/bugreport:<文件> 創建“Bug 報告”文件
/codepage:<n> 指定打開源文件時要使用的代碼頁
/utf8output 以 UTF-8 編碼格式輸出編譯器消息
/main:<類型> 指定包含入口點的類型(忽略所有其他可能的入口點) (縮寫: /m)
/fullpaths 編譯器生成完全限定路徑
/filealign:<n> 指定用於輸出文件節的對齊方式
/pdb:<文件> 指定調試信息文件名(默認值: 擴展名為 .pdb 的輸出文件名)
/nostdlib[+|-] 不引用標准庫(mscorlib.dll)
/lib:<文件列表> 指定要在其中搜索引用的附加目錄
/errorreport:<字符串> 指定如何處理內部編譯器錯誤: prompt、send、queue 或 none。默認值為 queue。
/moduleassemblyname:<字符串> 此模塊所屬程序集的名稱