升级现有项目以使用 Roslyn 编译器

Upgrade existing project to use Roslyn compiler

我安装了 VS 2015 并导入了现有的解决方案。此解决方案在 App_Code 文件夹中包含一个 Razor 助手。错误列表抱怨:

The type or namespace name 'global_asax' does not exist in the namespace 'ASP' (are you missing an assembly reference?)

经过一些研究,我发现这是(或曾经是)一个已知问题(参见 and this article)。这些文章中给出的解决方案是手动安装 Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet 包。

所以我在我的 Web 应用程序项目中安装了那个 NuGet 包,错误消失了。

但现在当我打开程序包管理器控制台时出现错误,抱怨它无法复制某些文件。 Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet 包配置信息中给出了丢失文件的(不正确的)路径。

所有这些让我相信一定有更好的方法!

我错过了什么吗?我不应该通过 VS 2015 自动获得新的 Roslyn 魔法吗?如果没有,是否有更好的方法将其安装到我现有的项目中?还是我只是绊倒了需要有人修复的损坏的基础设施位?

我在 VS 2015 中创建了一个新的 MVC 应用程序,并盯着它安装的 NuGet 包。原来我们显然需要安装

Microsoft.Net.Compilers NuGet 包

(而不是 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 包)。

编辑:在对这个解决方案进行了更多调整之后,它似乎并不比我在 OP 中给出的(失败的)解决方案更好。但不要害怕,显然有一个答案(如果你是 运行 VS 2015)。我将 post 作为一个单独的答案。

根据 this MSDN blog post,解决方案实际上是安装 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 软件包(我希望并假设,自从我在 2015 年 7 月尝试该软件包以来,它们已经修复)。 VS 2015 UI 甚至还内置了一些魔法,可以通过“项目”菜单安装该包。