我想总体了解一下Visual Studio,MSBuild和CSC之间的关系是什么?
原文:https://www.lmlphp.com/user/163430/article/item/3774617/
CSC.exe是C#编译器,它可以编译C#代码并生成可执行(.exe)文件,动态链接库(.dll)或代码模块(.netmodule)。
MSBuild是Microsoft Build Engine,可用于从Visual Studio生成projects and solutions。此外,即使我编写了一些.cs文件和一个自定义项目文件(.xxproj)来构建它们,我们也可以使用msbuild.exe通过类似msbuild xxx.xxproj
的命令来构建它们。请参见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是Visual Studio中的构建系统,但它并不依赖于Visual Studio。因此,您可以安装单独的Build Tools package for VS2019。
因此,我认为很明显,在构建C#项目时msbuild xx.csproj
会调用call csc.exe to compile C# code and pass parameters read from the .csproj file to it
。还有msbuild
,因此当csc.exe
时它将始终调用Visual Studio uses MSBuild as its build engine
。
由于MSBuild是自VS2015起的独立软件包(不确定时间),因此我们还可以安装免费的msbuild
来在VS IDE外部构建项目和解决方案。
(从VS2017及更高版本开始,对于VS2010,VS2012等早期VS版本,Visual Studio会调用msbuild API来构建项目,而不是调用msbuild.exe进程)
另外:您可以获得图片here,该图片描述了VS早期版本的关系。但我认为情况已经发生变化,因为在较早版本中,我确定VS build调用msbuild API而不是msbuild.exe,但是至少对于VS2017,在构建C#项目时,很明显它将msbuild.exe作为单独的过程进行调用当您通过building projects and solutions in Visual Studio
监视构建过程时。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2022-03-04 Cookie-based认证实现
2022-03-04 ASP.NET Core快速入门(第5章:认证与授权)
2022-03-04 JavaWeb项目实现文件上传动态显示进度
2022-03-04 ASP.NET Core MVC 项目在IIS中部署
2021-03-04 qt 中回调函数的实现
2021-03-04 演练:创建和使用自己的动态链接库 (C++)