我想知道:Roslyn 与 MsBuild 到底有什么关系?
我的理解是
- Roslyn 是一个编译引擎
- MsBuild 主要是一组关于如何设置项目的规范 向上 - 即基本上是 .csproj、.sln 文件和 等等。
然后,MsBuild 还附带一个 msbuild.exe - 如果我错了请纠正我,它能够实际编译项目。但是,假设 msbuild.exe 可以编译项目,但 Roslyn 也可以,这将如何与 Roslyn 联系起来?
如果是 MSBuild 15,msbuild.exe 是否使用 Roslyn 进行编译?他们是完全分开的吗?我是不是误会了什么?
而且更具体地说:假设我想以编程方式创建简单的 .csproj 文件,并使用 Roslyn 的 MSBuildWorkspace 来处理/填充并最终编译这些文件。 我的应用程序的最终用户是否需要在他们的机器上安装 Microsoft 的构建工具?或者这是没有必要的,因为 Roslyn 能够独立于任何本地 MSBuild 安装读取和编译这些文件?
最佳答案
MSbuild 是 Visual Studio 的构建系统。它调用C#编译器编译C#项目。 Roslyn 是 C# 编译器(和 VB 编译器)。所以 msbuild 使用 Roslyn。
但是,Roslyn 还包含了比编译器更多的东西。它还包含一个 VS 插件,可为您提供 IDE 功能(完成列表、着色、代码修复等)。
此外,Roslyn 还是一个用于分析源代码的 API,您可以在自己的应用程序中使用它。对于最后一个场景,有一个称为 MSBuildWorkspace 的 API,您可以使用它打开项目或解决方案进行分析。此工作区使用 MSBuild 来计算项目和解决方案的所有部分。所以这部分 Roslyn 使用 MSBuild。
关于c# - Roslyn 与 MsBuild 有何关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45167966/