代码之家  ›  专栏  ›  技术社区  ›  realmikep

在.NET核心WebAPI项目中找不到ApiController

  •  4
  • realmikep  · 技术社区  · 7 年前

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

    • .NET核心SDK 2.1.302
    • Microsoft.aspnetcore.all 2.1.2版
    • 微软.aspnetcore.app 2.1.2
    • 微软.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() {
    
            }
        }
    }
    

    Syntax highlighting shows ApiController not found

    生成错误:

    错误CS0246:类型或命名空间名称“apicontrollerattribute” 找不到(是否缺少using指令或程序集) 参考?)

    这个 Route 属性也在microsoft.aspnetcore.mvc程序集中,可以正确解析,无错误。所以,我知道集会在这里。

    对于MS文档,该属性在此程序集中定义:

    MS Docs for ApiControllerAttribute

    经过3个小时的搜索,我还没弄清楚。我不熟悉.NET核心,但不熟悉.NET。

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

    2 回复  |  直到 7 年前
        1
  •  4
  •   realmikep    7 年前

    我终于明白了。.csproj文件未指向的正确版本 TargetFramework PackageReference . 他们指向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>
    
        2
  •  -2
  •   Shahriat Hossain    7 年前

    是否添加了此项: 服务.addmvc() .setcompatibilityversion(兼容性版本.version_2_1);

    在你的启动类中?