2014-01-10 130 views
21

從命令提示符使用MSBuild和C#編譯器有什麼區別?我想在不使用Visual Studio的情況下手動構建我的解決方案/項目,我想了解如何使用命令行工具。MSBuild vs編譯器

回答

25

通過C#編譯器做你的意思csc.exe

如果這是你的意思,那麼cscMSBuild是完全不同的應用程序。

MSBuild使用解決方案和項目文件來構建項目中的文件。 MSBuild使用csc.exe作爲其實際的編譯器,但知道在哪裏可以找到程序集和參考文件等基於您的解決方案和項目文件(這些文件實際上是xml文件)。

當使用csc.exe時,您必須手動爲您的文件,引用等提供路徑,從而使編譯更加困難。

MSDN的MSBuild:http://msdn.microsoft.com/en-us/library/dd393574.aspx

MSDN CSC:http://msdn.microsoft.com/en-us/library/78f4aasd.aspx

+0

當你構建不Visual Studio中的幫助下,我不會說使用CSC比的MSBuild更加困難。使用它迫使你更深層次地理解你指示編譯器做什麼。這可以更容易地解決依賴性問題。它還使得在源代碼目錄中遞歸地自動編譯所有.cs文件變得相當容易,無需在每次向項目添加其他文件時編輯MSBuild文件。這也會迫使你不要使用.cs文件,這實際上是不好的做法。 –

+0

看起來像讀取MSBuild日誌文件可以開發相同的理解水平。 –

0

C#代碼先編譯到IL代碼,然後JIT編譯器編譯代碼,以CPU指令。所以所有的編譯器應該編譯代碼,以IL。 那麼,什麼是的MSBuild:

微軟構建引擎(MSBuild的)是 微軟和Visual Studio新的構建平臺。 MSBuild的是 方面完全透明的,它是如何處理和構建軟件,使開發人員 ,以協調和建立地方 的Visual Studio未安裝

See產品在構建實驗室環境:

的Visual Studio( sln)

如果你的解決方案很小,並且你不需要做些花哨的事情,你可以使用Visual Studio(sln)build runner。它和你做Project-> Build(從VS菜單)完全一樣。此選項非常易於配置,只需點擊幾下,CI服務器即可編譯您的解決方案。

的MSBuild

如果您需要做更高級的方案,除了簡單的編譯,就像使用不同的配置文件,插入轉化值到配置文件,部署的二進制文件等,你會選擇的MSBuild選項。你會知道什麼時候需要使用它,只是因爲sln builder不能做任何事情。這個選項需要一些構建腳本語言的知識,這是一種基於任務和XML的。