为什么VS 2022大多使用msbuild.exe,有时切换到vbcscompiler.exe?

问题描述 投票:0回答:1

这一切都始于我们的一位安全人员向我发送的一个问题。 他问我下面的这种行为是否正常且符合预期。 坦率地说:我不知道!

Img sent by security

所以,我搜索了一下,但找不到这个问题的正确答案。 VS 2022 主要使用 msbuild.exe,但有时会切换到 vbcscompiler.exe 来构建看似相同的项目,这是否正常? 或者它与 UT/IT VS 工具相关(我们在这个项目上有一个集成测试项目)?

预先感谢您的知识。

msbuild visual-studio-2022
1个回答
0
投票

MSbuild.exe 运行构建(项目、解决方案)。构建过程的一部分是(最终)编译一些源文件。对于 C# 来说,显然是 C# 编译器(或“Roslyn”)。

可以使用

csc.exe
Csc MSBuild Task
直接调用编译器。

为了加快编译速度,Roslyn 使用类似客户端/服务器的模型。

VBCSCompiler.exe
是服务器部分。它会缓存某些内容以供重复构建,以使整体构建速度更快。

因此,出于说明目的,您看到的是以下逻辑结构:

  • 视觉工作室
    • MSBuild.exe
      • Csc-任务(csc.exe)
        • VBCS编译器.exe

值得注意的是,

VBCSCompiler.exe
是一个服务器进程,并且在每次 CSC 调用后都不会消失(这会违背其目的 - 见上文)。出于同样的原因,顺便说一句,MSBuild.exe 进程也会被重用,并且通常(与
 /nodeReuse:false
命令行选项相比)在构建完成后不会消失。

这都是实际模型的非常简单的呈现,如果您有兴趣,您可能想深入挖掘。特别是,Visual Studio、MSBuild 和编译器之间的交互实际上要复杂一些。

© www.soinside.com 2019 - 2024. All rights reserved.