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

Posted

技术标签:

【中文标题】命名空间“Microsoft.AspNetCore.Razor”中不存在类型或命名空间名称“Hosting”【英文标题】:The type or namespace name 'Hosting' does not exist in the namespace 'Microsoft.AspNetCore.Razor' 【发布时间】:2018-11-22 07:52:22 【问题描述】:

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

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

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

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

我已经做了我可以做的研究,但尝试了以下方法无济于事:

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

【问题讨论】:

【参考方案1】:

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

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

将其更新为 2.1.0 后,该项目现在可以按预期运行。

【讨论】:

谢谢!我做了类似的事情。我将“Microsoft.AspNetCore.All”从 2.0.8 升级到 2.0.9,但没有警告我必须以 Core 2.1 为目标。 必须将 Microsoft.AspNetCore 和 Microsoft.AspNetCore.MVC 都更新到 2.1,然后它对我有用。 请注意,2.1 之后的推荐方法是在元包Microsoft.AspNetCore.All 上设置版本,而是根据您在&lt;TargetFramework&gt;netcoreapp2.1&lt;/TargetFramework&gt; 中指定的内容推断.在这里阅读更多:docs.microsoft.com/en-us/aspnet/core/fundamentals/…【参考方案2】:

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

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

他们使用 .net core 2,所以我在 core 2 中开始了我的项目。之前,我安装了 core 2.1。当我根据教程搭建一个控制器时,我得到了这个错误。我从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

然后我再次尝试搭建一个新的控制器。这解决了问题。工作正常。

【讨论】:

老兄。它帮助到我。谢谢 谢谢,谢谢,谢谢【参考方案3】:

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

【讨论】:

以上是关于命名空间“Microsoft.AspNetCore.Razor”中不存在类型或命名空间名称“Hosting”的主要内容,如果未能解决你的问题,请参考以下文章

移除指定 global using 命名空间

IFormFile 未从程序集“Microsoft.AspNetCore.Http 3.0”加载类型 Microsoft.AspNetCore.Http.Internal.FormFile'

Microsoft.AspNetCore.SpaServices.Extensions 的文档在哪里?

NETSDK1073:无法识别 FrameworkReference 'Microsoft.AspNetCore.App'

如何选择正确的 Microsoft.AspNetCore.Authentication 替代方案

未找到 Microsoft.AspNetCore.Antiforgery