Roslyn是否为Visual Studio 2017默认编译器?相关疑问求证
嗨,这个问题得拆成两部分说,我帮你理清楚:
Roslyn与Visual Studio 2017的默认编译器情况
核心结论:从Visual Studio 2015开始,Roslyn就已经是VS的默认编译器了,VS2017自然也不例外。不管是新建的.NET Framework还是.NET Core项目,默认都会用Roslyn来编译C#和VB.NET代码,完全不需要额外操作。
那两个NuGet包的真实作用
你提到的Microsoft.CodeDom.Providers.DotNetCompilerPlatform和Microsoft.Net.Compilers,可不是用来“启用Roslyn”的,它们是解决特定场景问题的:- 当你的项目需要运行时动态编译代码(比如用CodeDom API生成并编译代码),或者要部署到没有安装VS/Roslyn环境的服务器上时,安装这两个包会把Roslyn的编译器文件打包到项目的
/bin/roslyn目录里,这样即使服务器没有全局安装Roslyn,也能正常完成编译。 - 另外,如果你的项目是较老的.NET Framework版本(比如.NET 4.5及更早),默认可能还在使用旧的编译器,安装这两个包可以强制项目切换到Roslyn编译,从而用上Roslyn带来的新特性和优化。
- 当你的项目需要运行时动态编译代码(比如用CodeDom API生成并编译代码),或者要部署到没有安装VS/Roslyn环境的服务器上时,安装这两个包会把Roslyn的编译器文件打包到项目的
为什么会有“需要安装包才能启用”的误解?
大概率是有些文章只针对运行时编译或者老项目迁移的场景,没说明正常新建项目的默认情况,才导致了混淆。正常在VS2017里创建新项目,Roslyn已经在后台默默工作了,根本不用手动装包。
内容的提问来源于stack exchange,提问作者Arman Sahakyan
相关产品推荐
相关产品推荐

