The type or namespace name 'Hosting' does

2020-02-25 00:56发布

问题:

I've created a project using the Visual Studio .NET Core 2.1 SDK + React Template.

I'm met with the following error when running the project:

One or more compilation references are missing. Ensure that your project is referencing 'Microsoft.NET.Sdk.Web' and the 'PreserveCompilationContext' property is not set to false.

The type or namespace name 'Hosting' does not exist in the namespace 'Microsoft.AspNetCore.Razor' (are you missing an assembly reference?)

I've done what research I could and have tried the following to no avail:

  • dotnet restore in Package Manager Console
  • Deleting my bin and obj folders
  • Opening _ViewImports.cshtml and adding a @using for every namespace in my solution

If I modify the HomeController Index() from returning the View() to instead [HttpGet] public string Index() => "Hello World!";, the text is returned without any error.


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();
        }
    }
}

回答1:

Shortly after posting this I've solved the issue.

I had upgraded my project to .NET Core 2.1 but one of the references (Microsoft.AspNetCore.All) was version 2.0.8.

Upon updating this to 2.1.0, the project now works as expected.



回答2:

I am following this tutorial to get started in .net Core:

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

They use .net core 2, so I started my project in core 2. Previously, I installed core 2.1. When I scaffolded a controller according to the tutorial, I got this error. I found from here the below solution which solved my problem:

In my visual studio package manager console, I ran following three commands:

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

Then I tried to scaffold a new controller again. This solved the problem. Works fine.