我想知道msbuild.exe如何执行C#应用程序。
当我在谷歌搜索时,我开始了解csc.exe,PE文件,JIT,IL文件。 msbuild.exe在内部调用csc.exe来编译C#应用程序。所以我在反射器中打开了csc.exe。但是msbuild没有调用csc.exe。那么msbuild如何调用csc.exe?
答案 0 :(得分:2)
尽管EXE确实是库(如DLL,EXE是PE文件),但它们几乎总是通过使用命令行参数创建单独的进程来调用。 命令行参数传递给EXE的“main”函数,通常作为字符串数组。您可以使用Reflector找到csc的主要功能。
但是,您可能想知道msbuild为特定构建传递给csc的内容。在这种情况下,只需使用msbuild的详细程度开关:
msbuild MyProject.csproj /target:rebuild /verbosity:diag
答案 1 :(得分:1)
对csc.exe的调用包含在相应的.targets 1 脚本中。
MSBuild.exe本身无视哪个语言编译器(c#,vb,...)你正在瞄准。这取决于解决方案/项目及其参考资料。
对csc.exe的实际调用应位于.NET Framework文件夹中的Microsoft.MSBuild.Tasks.dll中。
1 在C#的情况下,它是Microsoft.CSharp.targets