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