AspNetCore运行时错误"预定义类型' System.String'没有定义或导入"

时间:2017-09-19 13:36:33

标签: razor asp.net-core

我将AspNetCore控制器和视图分离为一个独立的.net标准2.0项目,该项目引用了Microsoft.AspNetCore.Mvc包。控制器正常工作,可以找到视图cshtml。

但是,在运行时cshtml编译期间,抛出了大量异常,表明一些基本类型未定义,如System.String,System.Type,System.Void等。

错误

fs.stat

有人知道如何解决这个问题吗?

Index.cshtml

fail: Microsoft.AspNetCore.Server.Kestrel[13]
      Connection id "0HL7VCA4VNMOK", Request id "0HL7VCA4VNMOK:00000001": An unhandled exception was thrown by the application.
Microsoft.AspNetCore.Mvc.Razor.Compilation.CompilationFailedException: One or more compilation failures occurred:
bbnqa23f.htw(4,62): error CS0012: The type 'Attribute' is defined in an assembly that is not referenced. You must add a reference to assembly 'netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
bbnqa23f.htw(4,81): error CS0518: Predefined type 'System.String' is not defined or imported
bbnqa23f.htw(4,109): error CS0518: Predefined type 'System.Type' is not defined or imported
bbnqa23f.htw(4,11): error CS0518: Predefined type 'System.Void' is not defined or imported
bbnqa23f.htw(8,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)
bbnqa23f.htw(9,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)
bbnqa23f.htw(10,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)
bbnqa23f.htw(11,11): error CS0246: The type or namespace name 'System' could not be found (are you missing a using directive or an assembly reference?)

Layout.cshtml

@{
    ViewData["Title"] = "Home Page";
}

This is view

控制器

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"]</title>
</head>
<body>
@RenderBody()
</body>
</html>

Startup.cs

public class HomeController : Controller
{
    [HttpGet]
    public IActionResult Index()
    {
        return View();
    }
}

3 个答案:

答案 0 :(得分:0)

在将我的解决方案项目从netcoreapp1.1更新到netcoreapp2.0后,我遇到了类似的问题。我正在使用Visual Studio 2017,我不得不进行更新。

控制面板 - &gt;程序和功能 - &gt; Microsoft Visual Studio 2017 右键单击,选择“更改”。然后提示允许并更新。

之后一切都开始了。这仅适用于Web API项目,不确定它是否适用于cshtml。

答案 1 :(得分:0)

对我来说,这只是发生在VS 2019,ASP NET Core 3.1剃刀页面中。

我仍处于Release配置中,而不是Debug(我上次在解决方案中发布发布版本)

切换回Debug and Rebuilt解决方案。

已解决。

答案 2 :(得分:0)

我在 Azure DevOps 管道上遇到了同样的问题。我将 nuget 版本从 4.4 更新到 5.10 后,问题就消失了