6 c# msbuild csc visual-studio
我想总体了解Visual Studio、MSBuild和CSC之间的关系是什么?
我不想了解他们每个人的所有方面。但整体情况还是不错的。
两件重要的事情是:
他们每个人的责任:
CSC.exe是 C# 编译器,可以编译 C# 代码并生成可执行 (.exe) 文件、动态链接库 (.dll) 或代码模块 (.netmodule)。
MSBuild是 Microsoft 构建引擎,可用于从 Visual Studio构建项目和解决方案。此外,即使我编写了一些 .cs 文件和自定义项目文件 (.xxproj) 来构建它们,我们也可以使用 msbuild.exe 使用诸如msbuild xxx.xxproj. 请参阅此文档。
Visual Studio是一个软件套件,整合了编写和测试软件所需的基本工具。
他们每个人之间的关系:
如果我只有几个.cs文件并且我想编译它们以输出.exe之类的东西,那么csc.exe就足够了。在命令行( by cmd.exe or other things) 中使用它来编译代码。
如果我创建一个项目文件 (.xxproj) 来更好地控制资源、.cs 文件和其他文件,我可以在命令行中使用 msbuild来构建它们以输出 .exe 或其他文件。我们应该知道的一点是 msbuild.exe 不仅可以构建 C# 代码,而且VB.net, C++, F#...当我使用 msbuild 使用类似命令构建 C# 代码时msbuild xx.csproj,它会call csc.exe to compile C# code and pass parameters read from the .csproj file to it。
尽管 msbuild 是 Visual Studio 中的构建系统,但它并不依赖于 Visual Studio。因此,您可以为 VS2019 安装单独的构建工具包。
所以我认为在构建 C# 项目时msbuild调用是很清楚的。csc.exe并且Visual Studio uses MSBuild as its build engine,所以它总是会调用的msbuild时候building projects and solutions in Visual Studio。
由于 MSBuild 从 VS2015 开始是一个单独的包(不确定时间),因此我们还可以Build Tools package which contains msbuild.exe在 VS IDE 之外安装免费的构建项目和解决方案。
(从 VS2017 及更高版本开始,对于 VS2010、VS2012 等早期 VS 版本,Visual Studio 调用 msbuild API 来构建项目,而不是调用 msbuild.exe 进程)
另外:你可以在这里得到一张描述早期VS版本关系的图片。但我认为情况已经发生了变化,因为在早期版本中,我确信 VS 构建调用 msbuild API 而不是 msbuild.exe,但至少对于 VS2017,在构建 C# 项目时,很明显它会将 msbuild.exe 作为单独的进程调用当您通过 监控构建过程时task manager。
希望它能有所帮助,如果我误解了上面写的任何内容,请随时与我联系以纠正:)
| 归档时间: |
|
| 查看次数: |
1843 次 |
| 最近记录: |