.NET 8类库项目如何引用Microsoft.NET.Sdk.Web中的类?
在非Web类库中使用SelectListItem的解决办法
你不需要把类库项目改成Microsoft.NET.Sdk.Web,只需要给类库添加对应的NuGet包引用就能解决问题:
- 保持项目文件开头为
Microsoft.NET.Sdk(标准类库默认的SDK) - 在项目文件的
<ItemGroup>节点中添加Microsoft.AspNetCore.Mvc.ViewFeatures包的引用,这是.NET 8中包含SelectListItem的官方包
修改后的项目文件示例:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.Mvc.ViewFeatures" Version="8.0.0" /> </ItemGroup> </Project>
这样你的类库依然是标准类库项目,不会被识别为Web应用要求提供main()方法,同时可以正常引用Microsoft.AspNetCore.Mvc.Rendering命名空间下的SelectListItem。
补充:如果不想引入额外NuGet包,也可以手动定义一个和
SelectListItem结构一致的类,但这种方式不推荐——后续和Web项目交互时会出现类型不匹配的问题,维护成本更高。
内容的提问来源于stack exchange,提问作者Robert Paulsen
相关产品推荐
相关产品推荐

