我想知道:Roslyn究竟与MsBuild有什么关系?
我的理解是这样的
-
Roslyn是一个编译引擎
-
MsBuild主要是关于如何设置项目的一组规范 - 即基本上是.csproj,.sln文件等的定义模式 .
然后,MsBuild还附带了一个msbuild.exe - 如果我错了,请纠正我,能够实际编译项目 . 但是,假设msbuild.exe可以编译项目,那么它与Roslyn的关系如何?Roslin也是如此?
在MSBuild 15的情况下,msbuild.exe是否使用Roslyn进行编译?它们是完全分开的吗?我误会了什么吗?
而且更具体地说:假设我想以编程方式创建简单的.csproj文件,并使用Roslyn的MSBuildWorkspace来处理/填充并最终编译这些文件 . 我的应用程序的最终用户是否需要在其计算机上安装Microsoft的构建工具?或者这不是必需的,因为Roslyn能够独立于任何本地MSBuild安装来读取和编译这些内容吗?
1 回答
MSbuild是Visual Studio的构建系统 . 它调用C#编译器来编译C#项目 . Roslyn是C#编译器(和VB编译器) . 所以msbuild使用Roslyn .
但是,Roslyn还包含更多不仅仅是编译器的东西 . 它还包括一个VS插件,为您提供IDE功能(完成列表,着色,代码修复等) .
此外,Roslyn也是一个用于分析源代码的API,您可以在自己的应用程序中使用它 . 对于最后一个场景,有一个称为MSBuildWorkspace的API,您可以使用它来打开项目或解决方案以进行分析 . 此工作空间使用MSBuild来确定项目和解决方案的所有部分 . 所以Roslyn的这部分使用了MSBuild .