我想知道msbuild.exe如何執行C#應用程序。MSBUILD如何調用CSC.exe?
正如我在谷歌搜索我來到了解csc.exe,PE文件,JIT,IL文件。而msbuild.exe內部調用csc.exe來編譯C#應用程序。所以我在反射器中打開了csc.exe。但沒有從msbuild調用csc.exe。那麼msbuild如何調用csc.exe?
我想知道msbuild.exe如何執行C#應用程序。MSBUILD如何調用CSC.exe?
正如我在谷歌搜索我來到了解csc.exe,PE文件,JIT,IL文件。而msbuild.exe內部調用csc.exe來編譯C#應用程序。所以我在反射器中打開了csc.exe。但沒有從msbuild調用csc.exe。那麼msbuild如何調用csc.exe?
雖然,EXE文件確實庫(比如DLL文件,EXE文件是PE文件),它們幾乎都是通過創建一個單獨的過程被稱爲命令行參數。 命令行參數通常以字符串數組的形式傳遞給EXE的「main」函數。你可以用Reflector找到csc的主要功能。
但是,您可能想知道msbuild傳遞給csc的特定版本。在這種情況下,只需使用msbuild的詳細開關:
msbuild MyProject.csproj /target:rebuild /verbosity:diag
對csc.exe的調用包含在相應的.targets 腳本中。
MSBuild.exe本身不知道您所針對的語言編譯器(c#,vb,...)。這由解決方案/項目及其參考確定。
對csc.exe的實際調用應位於.NET Framework文件夾中的Microsoft.MSBuild.Tasks.dll中。
在C#它的Microsoft.CSharp.targets情況下
但我無法在反射器中找到這樣的呼叫....如何找到它? – Karthikeyan
https://msdn.microsoft.com/en-us/library/s5c8athz.aspx –
Hans Passant:謝謝。 CSC.exe會在哪裏生成PE文件IL文件? – Karthikeyan