“IServiceCollection”不包含使用 dot net 5 的“AddApiVersioning”定义,用于 webapi vs 代码项目

问题描述

我正在尝试将版本控制 (Microsoft.AspNet.WebApi.Versioning) 与 dotnet 5 用于 webapi 项目。我已经添加了 nuget 包,但出现以下错误

“IServiceCollection”不包含“AddApiVersioning”的定义,并且找不到接受“IServiceCollection”类型的第一个参数的可访问扩展方法“AddApiVersioning”(您是否缺少 using 指令或程序集参考?)

在这一行:

@H_502_10@services.AddApiVersioning();

在我的 Startup.cs 中

我的 .csproj 文件如下所示:

@H_502_10@<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>net5.0</TargetFramework> </PropertyGroup> <ItemGroup> <packagereference Include="Microsoft.Identity.Web" Version="1.0.0"/> <packagereference Include="Microsoft.Identity.Web.UI" Version="1.0.0"/> <packagereference Include="Swashbuckle.AspNetCore" Version="5.6.3"/> <packagereference Include="Microsoft.Data.@R_502_6308@Client" Version="2.0.1"/> <packagereference Include="Dapper" Version="2.0.35"/> <packagereference Include="Azure.Storage.Blobs" Version="12.4.1"/> <packagereference Include="Microsoft.AspNet.WebApi.Versioning" Version="4.1.1"/> </ItemGroup> </Project>

我尝试遵循一些示例,例如 this onethis onethis one,我应该有以下“使用指令”:

@H_502_10@using Microsoft.AspNetCore.Mvc;

有人有同样的挑战吗? .net 5 是否支持版本控制?

解决方法

您正在使用包 Microsoft.AspNet.WebApi.Versioning,它是 ASP.NET Web API 的 API 版本控制包,是 .NET Framework 的经典 Web API 框架。

您使用的是 ASP.NET Core,因此您将需要包 Microsoft.AspNetCore.Mvc.Versioning。这个包也是你链接的教程中提到的那个。

但是很容易混淆这些包,因为它们都来自 same repository on GitHub,后者还为特殊用例生成了一些额外的包。