首页 文章

Roslyn如何与MsBuild相关?

提问于
浏览
12

我想知道: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 回答

  • 8

    MSbuild是Visual Studio的构建系统 . 它调用C#编译器来编译C#项目 . Roslyn是C#编译器(和VB编译器) . 所以msbuild使用Roslyn .

    但是,Roslyn还包含更多不仅仅是编译器的东西 . 它还包括一个VS插件,为您提供IDE功能(完成列表,着色,代码修复等) .

    此外,Roslyn也是一个用于分析源代码的API,您可以在自己的应用程序中使用它 . 对于最后一个场景,有一个称为MSBuildWorkspace的API,您可以使用它来打开项目或解决方案以进行分析 . 此工作空间使用MSBuild来确定项目和解决方案的所有部分 . 所以Roslyn的这部分使用了MSBuild .

相关问题