命名空间“Microsoft.AspNetCore.Razor”中不存在类型或命名空间名称“Hosting”

时间:2018-06-12 20:18:11

标签: c# asp.net-mvc razor asp.net-core

我使用Visual Studio .NET Core 2.1 SDK + React Template 创建了一个项目。

运行项目时遇到以下错误:

  

缺少一个或多个编译引用。确保您的项目引用了“Microsoft.NET.Sdk.Web”,并且“PreserveCompilationContext”属性未设置为false。

  

命名空间中不存在类型或命名空间名称“Hosting”   'Microsoft.AspNetCore.Razor'(您是否缺少程序集引用?)

enter image description here

我已经完成了我可以进行的研究并尝试了以下内容但无济于事:

    程序包管理器控制台中的
  • dotnet restore
  • 删除我的binobj文件夹
  • 打开_ViewImports.cshtml并为解决方案中的每个命名空间添加@using

如果我将HomeController Index()修改为从View()返回[HttpGet] public string Index() => "Hello World!";,则会返回文本而不会出现任何错误。

Index.cshtml

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

<div id="react-app">Loading...</div>

@section scripts {
    <script src="~/dist/main.js" asp-append-version="true"></script>
}

HomeController.cs

using System.Diagnostics;
using Microsoft.AspNetCore.Mvc;

namespace sample_project.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }

        public IActionResult Error()
        {
            ViewData["RequestId"] = Activity.Current?.Id ?? HttpContext.TraceIdentifier;
            return View();
        }
    }
}

3 个答案:

答案 0 :(得分:28)

发布后不久,我就解决了这个问题。

我已将项目升级到.NET Core 2.1,但其中一个引用(Microsoft.AspNetCore.All)是版本2.0.8

将此更新为2.1.0后,项目现在可以正常运行。

答案 1 :(得分:6)

我正在按照本教程开始使用.net Core:

Getting Started with EF Core on ASP.NET Core with a New database

他们使用.net核心2,因此我在核心2中启动了我的项目。以前,我安装了核心2.1。当我按照教程脚手架安装控制器时,出现此错误。我从here找到了以下解决了我问题的解决方案:

enter image description here

在我的Visual Studio包管理器控制台中,我运行以下三个命令:

Install-Package Microsoft.AspNetCore.All -Version 2.0.8
Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.0.3
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design -Version 2.0.1

然后我尝试再次搭建一个新控制器。这样就解决了问题。效果很好。

答案 2 :(得分:2)

如果您使用 .Net Core 3.0 或更高版本, 将此添加到您的托管项目中的 startup.cs : services.AddRazorPages();