MSBUILD如何调用CSC.exe?

时间:2015-11-19 07:13:26

标签: c# visual-studio compilation msbuild csc

我想知道msbuild.exe如何执行C#应用程序。

当我在谷歌搜索时,我开始了解csc.exe,PE文件,JIT,IL文件。 msbuild.exe在内部调用csc.exe来编译C#应用程序。所以我在反射器中打开了csc.exe。但是msbuild没有调用csc.exe。那么msbuild如何调用csc.exe?

2 个答案:

答案 0 :(得分: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 :(得分:1)

对csc.exe的调用包含在相应的.targets 1 脚本中。
MSBuild.exe本身无视哪个语言编译器(c#,vb,...)你正在瞄准。这取决于解决方案/项目及其参考资料。

对csc.exe的实际调用应位于.NET Framework文件夹中的Microsoft.MSBuild.Tasks.dll中。

1 在C#的情况下,它是Microsoft.CSharp.targets