Visual Studio、MSBuild和CSC有什么关系?
What is the relationship between Visual Studio, MSBuild and CSC?
想大概了解一下Visual Studio、MSBuild和之间的关系是什么中信?
我不想了解他们每个人的所有方面。不过整体还是不错的。
两件重要的事情是:
- 他们每个人的责任
- 他们之间的关系
各自的职责:
CSC.exe 是 C# 编译器,它可以编译您的 C# 代码并生成可执行 (.exe) 文件、dynamic-link 库 (.dll) 或代码模块 (.netmodule)。
MSBuild is Microsoft Build Engine which can be used to build projects and solutions from Visual Studio. Besides, even if I wrote some .cs files and a custom project file (.xxproj) to structure them, we can use msbuild.exe to build them using a command like msbuild xxx.xxproj
. See this document.
Visual Studio 是一个软件套件,整合了编写和测试软件所需的基本工具。
他们之间的关系:
如果我只有几个.cs文件,想编译输出一个.exe什么的,那么csc.exe就够了。 Use it in command-line (by cmd.exe or other things
) 编译代码。
如果我创建项目文件 (.xxproj) 以更好地控制资源、.cs 文件和其他文件,我可以 use msbuild in command-line 构建它们以输出 .exe或者是什么。我们应该知道的一点是 msbuild.exe 不仅可以构建 C# 代码,还可以 VB.net, C++, F#
... 当我使用 msbuild 使用像 msbuild xx.csproj
这样的命令构建 C# 代码时,它将 call csc.exe to compile C# code and pass parameters read from the .csproj file to it
.
虽然 msbuild 是 Visual Studio 中的构建系统,但它不依赖于 Visual Studio。所以你可以单独安装一个Build Tools package for VS2019.
所以我认为很明显 msbuild
在构建 C# 项目时调用 csc.exe
。而Visual Studio uses MSBuild as its build engine
,所以它总是在building projects and solutions in Visual Studio
时调用msbuild
。
而且由于 MSBuild 自 VS2015 以来是一个单独的包(不确定时间),我们还可以安装一个免费的 Build Tools package which contains msbuild.exe
来在 VS IDE 之外构建项目和解决方案。
(从VS2017及更高版本开始,对于较早的VS版本,如VS2010、VS2012,Visual Studio调用msbuild API构建项目,而不是调用msbuild.exe进程)
此外:您可以获得一张图片here,它描述了早期 VS 版本的关系。但我认为情况已经发生了变化,因为在早期版本中,我确定 VS 构建调用 msbuild API 而不是 msbuild.exe,但至少对于 VS2017,在构建 C# 项目时,很明显它调用 msbuild.exe 作为单独的进程,当您通过 task manager
.
监视构建过程时
希望对您有所帮助,如果我对上面所写的内容有任何误解,请随时联系我进行更正:)
想大概了解一下Visual Studio、MSBuild和之间的关系是什么中信?
我不想了解他们每个人的所有方面。不过整体还是不错的。
两件重要的事情是:
- 他们每个人的责任
- 他们之间的关系
各自的职责:
CSC.exe 是 C# 编译器,它可以编译您的 C# 代码并生成可执行 (.exe) 文件、dynamic-link 库 (.dll) 或代码模块 (.netmodule)。
MSBuild is Microsoft Build Engine which can be used to build projects and solutions from Visual Studio. Besides, even if I wrote some .cs files and a custom project file (.xxproj) to structure them, we can use msbuild.exe to build them using a command like msbuild xxx.xxproj
. See this document.
Visual Studio 是一个软件套件,整合了编写和测试软件所需的基本工具。
他们之间的关系:
如果我只有几个.cs文件,想编译输出一个.exe什么的,那么csc.exe就够了。 Use it in command-line (
by cmd.exe or other things
) 编译代码。如果我创建项目文件 (.xxproj) 以更好地控制资源、.cs 文件和其他文件,我可以 use msbuild in command-line 构建它们以输出 .exe或者是什么。我们应该知道的一点是 msbuild.exe 不仅可以构建 C# 代码,还可以
VB.net, C++, F#
... 当我使用 msbuild 使用像msbuild xx.csproj
这样的命令构建 C# 代码时,它将call csc.exe to compile C# code and pass parameters read from the .csproj file to it
.虽然 msbuild 是 Visual Studio 中的构建系统,但它不依赖于 Visual Studio。所以你可以单独安装一个Build Tools package for VS2019.
所以我认为很明显 msbuild
在构建 C# 项目时调用 csc.exe
。而Visual Studio uses MSBuild as its build engine
,所以它总是在building projects and solutions in Visual Studio
时调用msbuild
。
而且由于 MSBuild 自 VS2015 以来是一个单独的包(不确定时间),我们还可以安装一个免费的 Build Tools package which contains msbuild.exe
来在 VS IDE 之外构建项目和解决方案。
(从VS2017及更高版本开始,对于较早的VS版本,如VS2010、VS2012,Visual Studio调用msbuild API构建项目,而不是调用msbuild.exe进程)
此外:您可以获得一张图片here,它描述了早期 VS 版本的关系。但我认为情况已经发生了变化,因为在早期版本中,我确定 VS 构建调用 msbuild API 而不是 msbuild.exe,但至少对于 VS2017,在构建 C# 项目时,很明显它调用 msbuild.exe 作为单独的进程,当您通过 task manager
.
希望对您有所帮助,如果我对上面所写的内容有任何误解,请随时联系我进行更正:)