为何引用Microsoft.AspNetCore.Mvc仍找不到IStatusCodeActionResult?
关于
IStatusCodeActionResult类型引用问题的疑问 IStatusCodeActionResult接口定义在Microsoft.AspNetCore.Mvc.Infrastructure命名空间下,位于程序集Microsoft.AspNetCore.Mvc.Core.dll中。
我的项目已引用会隐式安装Microsoft.AspNetCore.Mvc.Core的NuGet包:
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.3.0" />
但仅保留此引用时编译失败,提示:
错误 CS0246: 找不到类型或命名空间名“IStatusCodeActionResult”(是否缺少 using 指令或程序集引用?)
添加如下引用后,该类型可正常识别,编译成功:
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.5" />
疑问:
- 为何需添加这类与
Mvc.Infrastructure交互的测试包才能使该类型可用? - 是否存在仅提供
Mvc.Infrastructure的包,无需引入测试、认证类包?
最小复现代码
ConsoleApp1.csproj:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net9.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.3.0" /> <!-- 取消注释可使IStatusCodeActionResult可见 --> <!-- <PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.5" />--> </ItemGroup> </Project>
Program.cs:
using Microsoft.AspNetCore.Mvc.Infrastructure; namespace ConsoleApp1; class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); IStatusCodeActionResult a = null; // 本应可解析,但实际无法解析 } }
内容的提问来源于stack exchange,提问作者w7rus
相关产品推荐
相关产品推荐

