在.NET Core WebApi项目中找不到ApiController

rea*_*kep 6 c# asp.net-web-api2 visual-studio-code asp.net-core-2.0

我已经在Visual Studio Code中创建了一个新的.NET Core WebAPI项目。所有依赖项已还原。该项目正在使用以下SDK和运行时:

  • .NET Core SDK 2.1.302
  • Microsoft.AspNetCore。全部2.1.2
  • Microsoft.AspNetCore.App 2.1.2
  • Microsoft.NETCore.App 2.1.2

我的控制器类(包括Intellisense视图的屏幕截图):

using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;

namespace Gmn.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class MyController : ControllerBase
    {
        public MyController() {

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

语法高亮显示找不到ApiController

生成错误:

错误CS0246:找不到类型或名称空间名称“ ApiControllerAttribute”(您是否缺少using指令或程序集引用?)

Route属性(也位于Microsoft.AspNetCore.Mvc程序集中)可以正确解析,没有错误。所以,我知道程序集已经存在。

根据MS Docs,该程序集定义了该属性:

MS Docs for ApiControllerAttribute

经过3个小时的搜索,我仍无法弄清楚。我是.NET Core的新手,但不是.NET。

有什么建议可以解决这个问题吗?谢谢。

rea*_*kep 5

我终于想通了。该.csproj的文件没有指向正确的版本TargetFrameworkPackageReference。他们指的是2.0版本。甚至没有安装2.0,但是没有任何错误。(来自Visual Studio,我已经习惯了为我做的所有魔术!)

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

  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

...

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.2" />
  </ItemGroup>

...

</Project>
Run Code Online (Sandbox Code Playgroud)


Sha*_*ain -2

您是否添加了以下一项: services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

在你的创业课程中?

  • 这不会改变编译器的工作方式。这是非常明显的编译器错误。 (3认同)