【问题标题】:How MSBUILD calls CSC.exe?MSBUILD如何调用CSC.exe?
【发布时间】:2015-11-19 07:13:25
【问题描述】:

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

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

【问题讨论】:

标签: c# visual-studio compilation msbuild csc


【解决方案1】:

虽然 EXE 确实是库(如 DLL,EXE 是 PE 文件),但它们几乎总是通过使用命令行参数创建单独的进程来调用。 命令行参数被传递给 EXE 的“主”函数,通常作为字符串数组。您可以使用 Reflector 找到 csc 的主要功能。

但是,您可能想知道 msbuild 针对特定构建传递给 csc 的内容。在这种情况下,只需使用 msbuild 的详细程度开关:

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

Obtaining Build Logs with MSBuild

【讨论】:

    【解决方案2】:

    对 csc.exe 的调用包含在相应的 .targets1 脚本中。
    MSBuild.exe 本身不知道您是哪种语言编译器(c#、vb、...)瞄准。这由解决方案/项目及其引用决定。

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

    1 如果是 C#,则为 Microsoft.CSharp.targets

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 2011-05-20
      • 1970-01-01
      • 2011-07-30
      相关资源
      最近更新 更多