web-dev-qa-db-fra.com

ApiController introuvable dans le projet .NET Core WebApi

J'ai créé un nouveau projet .NET Core WebAPI dans Visual Studio Code. Toutes les dépendances ont été restaurées. Le projet utilise le SDK et les runtimes suivants:

  • SDK .NET Core 2.1.302
  • Microsoft.AspNetCore.All 2.1.2
  • Microsoft.AspNetCore.App 2.1.2
  • Microsoft.NETCore.App 2.1.2

Ma classe de contrôleur (y compris une capture d'écran pour la vue 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

Erreur de build:

erreur CS0246: le type ou le nom d'espace de nom "ApiControllerAttribute" est introuvable (manque-t-il une directive using ou une référence d'assembly?)

L'attribut Route, qui se trouve également dans l'assembly Microsoft.AspNetCore.Mvc, se résout correctement, aucune erreur. Je sais donc que l'Assemblée est présente.

Par MS Docs, l'attribut est défini dans cet assembly:

MS Docs for ApiControllerAttribute

Après 3 heures de recherche, je n'ai pas pu comprendre cela. Je suis nouveau sur .NET Core, mais pas .NET.

Des suggestions sur la façon de résoudre ce problème? Merci.

6
realmikep

J'ai finalement compris cela. Le fichier .csproj ne pointait pas vers les versions correctes pour TargetFramework et PackageReference. Ils pointaient vers des versions 2.0. 2.0 n'est même pas installé, mais il n'y a pas eu d'erreurs à ce sujet. (Venant de Visual Studio, j'ai l'habitude de faire toute cette magie pour moi!)

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

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

...

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

...

</Project>
5
realmikep