如何移除已弃用的Microsoft.AspNetCore.Authentication.Abstractions包并在类库中使用IClaimsTransformation等相关接口
如何移除已弃用的Microsoft.AspNetCore.Authentication.Abstractions包并在类库中使用IClaimsTransformation等相关接口
嗨,我来帮你理清这个问题的解决思路!首先咱们先明确背景:你提到的Microsoft.AspNetCore.Authentication.Abstractions包确实已经被弃用,它的内容现在整合到了Microsoft.AspNetCore.App.Ref里,但这个包是.NET Core SDK的内部实现组件,绝对不能作为普通的PackageReference直接引用,否则会带来版本兼容或者内部依赖的问题。
如果你想在类库(而非Web应用项目)里使用IClaimsTransformation、IHttpContextAccessor这类接口,按下面的步骤操作就可以:
第一步:移除弃用的包
打开你的类库项目的.csproj文件,找到下面这一行内容,直接删除它:
<PackageReference Include="Microsoft.AspNetCore.Authentication.Abstractions" />
保存文件后,项目就不会再依赖这个已弃用的包了。
第二步:正确引入所需接口的依赖
对于.NET 6及以上版本的类库项目,最推荐的方式是使用FrameworkReference引入ASP.NET Core共享框架,这样就能自动获取到所有你需要的抽象接口,还不会踩内部包的坑。
在.csproj文件里添加如下配置:
<ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> </ItemGroup>
这个引用会自动匹配你当前使用的.NET SDK版本,包含IClaimsTransformation、IHttpContextAccessor以及其他ASP.NET Core核心抽象组件,完全不需要手动管理零散的包版本。
额外注意事项
- 如果你用的是.NET Core 3.1这类较老版本,也可以通过引用
Microsoft.AspNetCore.Http.Abstractions(包含IHttpContextAccessor)和Microsoft.AspNetCore.Authentication(包含IClaimsTransformation相关抽象)这两个合法的NuGet包来解决,但还是更建议升级到较新的.NET版本使用FrameworkReference。 - 另外要记得:类库只是依赖这些接口,在实际运行的Web应用项目里,你需要正确注册对应的服务,比如
IHttpContextAccessor需要在Program.cs(或Startup.cs)里调用services.AddHttpContextAccessor(),类库才能正常获取到实例。
备注:内容来源于stack exchange,提问作者ZorgoZ
相关产品推荐
相关产品推荐

