名称 'model' 在 ASP.NET 核心的当前上下文中不存在

The name 'model' does not exist in current context in ASP.NET Core

我正在尝试使用 ASP.NET Core 开发带有插件的网站。我有我的主要项目 asp.net Web 应用程序,它运行良好。我有一个带有控制器的 class 库项目,它也可以正常工作,但我有问题的视图。当我打开 *.cshtml 文件时,我可以看到 Razor 不起作用 - @using、@model 和其他指令无法识别,智能感知也不起作用。当我将鼠标悬停在模型上时,我收到标题错误:

The name 'model' does not exist in current context in ASP.NET Core

我使用 EmbeddedFileProvider 来发现视图,它们被标记为嵌入式资源。当我 运行 应用程序一切正常时 - 视图呈现正确。我唯一的问题是 Visual Studio 中的 false-positive 个错误。我用谷歌搜索发现了类似的问题,但主要针对 ASP.NET MVC,而不是 Core - like here。我认为 class 库配置中缺少某些内容,但我不确定到底是什么。

新的 csproj 文件在顶级 "Project" 元素中有一个 "Sdk" 属性。当您创建一个新的 Web 应用程序时,它会被设置为 "Web" SDK:

<Project Sdk="Microsoft.NET.Sdk.Web">...</Project>

当您 add/create 一个 class 库时,它默认为标准的非网络 SDK:

<Project Sdk="Microsoft.NET.Sdk">...</Project>

据我所知,Web SDK 导入了额外的任务以允许在设计时处理 Web 资源,例如 Razor 视图。 将您的插件库中的SDK更改为Web。

"Web"项目的另一个参数是它默认输出一个EXE,所以也把这个添加到你的插件csproj:

<PropertyGroup>
    <OutputType>Library</OutputType>
</PropertyGroup>