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

10
我在Visual Studio Code中创建了一个新的.NET Core WebAPI项目,所有依赖项都已经恢复。该项目正在使用以下SDK和运行时:
  • .NET Core SDK 2.1.302
  • Microsoft.AspNetCore.All 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() {

        }
    }
}

语法高亮显示ApiController未找到

编译错误:

error CS0246:找不到类型或命名空间名称 'ApiControllerAttribute'(是否缺少 using 指令或程序集引用?)

Route 属性也在 Microsoft.AspNetCore.Mvc 程序集中,可以正确解决,没有错误。因此,我知道该程序集存在。

根据 MS Docs,该属性定义在此程序集中:

MS Docs for ApiControllerAttribute

经过3个小时的搜索,我仍然无法解决这个问题。我是 .NET Core 的新手,但不是 .NET 的新手。

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


你是否参考了官方文档 https://learn.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-2.1 以确保不遗漏呢? - Nkosi
尝试清理并重新构建您的解决方案 :) - Sasha
我已经查阅了官方文档,并清理/重建了解决方案。我还卸载了所有先前的.NET Core SDK,然后重新安装了最新版本。 - realmikep
2个回答

7

我终于明白了。.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>

终于,在漫长的搜索之后,你的答案对我起了作用。 - Rajon Tanducar

-2
你是否已经在启动类中添加了以下代码: services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_1); ?

3
那不会改变编译器的工作方式。这显然是一个编译器错误。 - TomTom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接