盡管通過命令行工作時可以體驗到其與生俱來的優勢,但沒有人能夠否認鍵入數十個編譯器選項可能導致手指抽筋和錄入錯誤。為了有助於 減輕這兩個問題,C#編譯器支持使用響應文件。
注 所有命令提示都允許您使用Up和Down箭頭鍵遍歷以前的命令。
響應文件(它們按照約定采用*.rsp文件擴展名)包含您希望供給到csc.exe中的所有選項。在創建了該文件以後,您就可以將它的名稱指定 為C#編譯器的唯一選項。為了便於說明,下面提供了一個將用於生成 MyCodeLibrary.dll的響應文件(請注意,您可以使用#符號指定注釋)。
# MyCodeLibraryArgs.rsp
# These are the options used
# to compile MyCodeLibrary.dll
# Output target and name.
/t:library
/out:MyCodeLibrary.dll
# Location of C# files.
/recurse:*.cs
# Give me an XML doc.
/doc:myDoc.xml
# Give me a strong name as well.
/keyfile:C:\MyKeyPair\myKeypair.snk
給定該文件以後,您現在就可以使用@選項指定MyCodeLibraryArgs.rsp了:
csc @MyCodeLibraryArgs.rsp
如果您願意,則可以指定多個響應文件:
csc @MyCodeLibraryArgs.rsp @MoreArgs.rsp @EvenMoreArgs.rsp
請記住,按照遇到的順序對響應文件進行處理。因此,以前的文件中的設置可能被以後的文件中的設置重寫。
默認的響應文件和 /noconfig 選項
最後,請記住有一個默認的響應文件—csc.rsp,它由csc.exe在每次編譯期間自動處理。如果您分析該文件(它與 csc.exe 本身位於 相同的文件夾中)的內容,則您將只是發現一組經常引用的程序集(System.Windows.Forms.dll、System.Data.dll 等等)。
在您希望禁止包括csc.rsp的極少數的場合中,您可以指定/noconfig標志:
csc /noconfig @MyCodeLibraryArgs.rsp
注 如果您引用程序集,而實際上並不使用它,則它將不會在程序集清單中列出。因此,請不要擔心代碼膨脹問題,因為它們根本不存在。