C# 由于奇怪的编译错误CS0234,Razor无法呈现视图

C# 由于奇怪的编译错误CS0234,Razor无法呈现视图,c#,asp.net-mvc,asp.net-core,razor,C#,Asp.net Mvc,Asp.net Core,Razor,我有一个现有的ASP.NET core 2.2(SDK版本2.2.108)Web API,现在我正在添加MVC来承载一个带有控制器的网页。我补充说: -新控制器 -新的.cshtml视图 -确保my startup.cs包含services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2) 我使用的是Http.Sys,我得到了500[Microsoft.AspNetCore.Server.HttpSys.Mess

我有一个现有的ASP.NET core 2.2(SDK版本2.2.108)Web API,现在我正在添加MVC来承载一个带有控制器的网页。我补充说: -新控制器 -新的.cshtml视图 -确保my startup.cs包含
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2)

我使用的是Http.Sys,我得到了500[Microsoft.AspNetCore.Server.HttpSys.MessagePump]ProcessRequestAsync。 如果我在VS 2017(15.9.13)中启用例外,我会看到:

Microsoft.AspNetCore.Mvc.Razor.Compilation.CompilationFailedException:'发生了一个或多个编译失败:
310z1p4f.mzl(4,41):错误CS0234:命名空间“Microsoft.AspNetCore”中不存在类型或命名空间名称“Razor”(是否缺少程序集引用?)
310z1p4f.mzl(5,40):错误CS0234:命名空间“Microsoft.AspNetCore”中不存在类型或命名空间名称“Mvc”(是否缺少程序集引用?)
310z1p4f.mzl(4,82):错误CS0518:未定义或导入预定义类型“System.type”
310z1p4f.mzl(4122):错误CS0518:未定义或导入预定义类型“System.String”

它还在继续

我在构建输出中看到:

Microsoft.AspNetCore.Razor.dll
Microsoft.AspNetCore.Razor.Language.dll
Microsoft.AspNetCore.Razor.Runtime.dll
我就SO和github进行了几次不同的讨论:


但是没有运气。想法?

好的,试试这个,右键单击项目并编辑项目文件

在“项目参考”下,您应该看到

<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" 
    PrivateAssets="All" />


如果不添加它。

好的,我发现了问题。基本上有两个项目:

  • 也可以作为Windows服务运行的控制台应用程序。这将实例化web服务器
  • 包含Web API的库
  • 这两个应用程序的目标都是
    ,一旦我将2改为使用
    ,并成为一个库而不是控制台应用程序,一切都开始工作


    我花了很长时间才弄明白这一点,因为Web API在使用(错误的)配置之前运行良好。嗯

    我制作了一个演示以进行测试,但没有抛出错误。您是否尝试更新ASP.NET core 2.2 SDK的最新版本?我使用该SDK是因为我想使用VS2017。然而,我刚刚找到了罪犯,我写了一个答案,以防其他人遇到同样的问题。这为我解决了它,谢谢!