2015-11-19 35 views
1

我想知道msbuild.exe如何執行C#應用程序。MSBUILD如何調用CSC.exe?

正如我在谷歌搜索我來到了解csc.exe,PE文件,JIT,IL文件。而msbuild.exe內部調用csc.exe來編譯C#應用程序。所以我在反射器中打開了csc.exe。但沒有從msbuild調用csc.exe。那麼msbuild如何調用csc.exe?

+0

https://msdn.microsoft.com/en-us/library/s5c8athz.aspx –

+0

Hans Passant:謝謝。 CSC.exe會在哪裏生成PE文件IL文件? – Karthikeyan

回答

2

雖然,EXE文件確實庫(比如DLL文件,EXE文件是PE文件),它們幾乎都是通過創建一個單獨的過程被稱爲命令行參數。 命令行參數通常以字符串數組的形式傳遞給EXE的「main」函數。你可以用Reflector找到csc的主要功能。

但是,您可能想知道msbuild傳遞給csc的特定版本。在這種情況下,只需使用msbuild的詳細開關:

msbuild MyProject.csproj /target:rebuild /verbosity:diag 

請參閱Obtaining Build Logs with MSBuild

1

對csc.exe的調用包含在相應的.targets 腳本中。
MSBuild.exe本身不知道您所針對的語言編譯器(c#,vb,...)。這由解決方案/項目及其參考確定。

對csc.exe的實際調用應位於.NET Framework文件夾中的Microsoft.MSBuild.Tasks.dll中。

在C#它的Microsoft.CSharp.targets情況下

+0

但我無法在反射器中找到這樣的呼叫....如何找到它? – Karthikeyan