VS2017下.NET4.0项目NuGet安装DotNetCompilerPlatform包失败求助
核心问题根因
Microsoft.CodeDom.Providers.DotNetCompilerPlatform3.6.0版本的最低适配要求为.NET Framework 4.7.2,与当前项目目标的.NETFramework,Version=v4.0完全不兼容,这是升级报错的本质原因,在不升级项目目标框架的前提下不存在绕过安装的方案。- 回退安装2.0.1版本失败,通常是之前升级操作残留的NuGet引用、项目配置条目冲突导致的,2.0.1版本本身完全兼容.NET Framework 4.0,不存在框架适配问题。
可落地解决方案
安装最新3.6.0版本的操作路径
- 将项目目标框架从.NET Framework 4.0升级至.NET Framework 4.7.2及以上版本,满足3.x系列包的硬性适配要求
- 清理解决方案下的packages缓存目录,移除项目文件内残留的旧包引用条目,即可通过NuGet正常安装3.6.0版本
恢复安装适配.NET 4.0的2.0.1版本的操作路径
按以下步骤清理升级残留后再执行安装:
- 完全卸载当前所有版本的
Microsoft.CodeDom.Providers.DotNetCompilerPlatform包 - 手动打开项目下的
packages.config,删除所有和该包相关的残留配置条目 - 打开项目的
.csproj文件,移除残留的该包程序集引用、关联的MSBuild构建目标条目 - 执行命令
dotnet nuget locals all --clear清理本地NuGet全局缓存 - 在NuGet包管理器中手动指定2.0.1版本执行安装,即可正常完成适配
该包的存在必要性说明
- 对于目标.NET Framework 4.0的传统ASP.NET项目,卸载该包后会默认使用.NET Framework自带的旧版编译器,而非Roslyn编译器
- 如果项目仅使用C# 5.0及更低版本语法,不需要Roslyn提供的新语法支持,完全可以彻底卸载该包,不会影响项目正常运行
- 如果项目需要使用C# 6.0及以上版本语法,在.NET 4.0的项目环境下仅可安装2.0.1版本的包来接入Roslyn,高版本完全无法适配,不存在其他兼容选项
内容的提问来源于stack exchange,提问作者StevenJe
相关产品推荐
相关产品推荐

