如何解决ASP.NET Core中_Imports.razor里的Shared命名空间冲突问题
问题原因
你的项目同时存在两个Shared相关命名空间:一个是类库的Shared根命名空间,另一个是Web项目内部的Web.Areas.User.Views.Shared命名空间。编译器解析@using Shared.Extensions时,优先匹配了Web项目内部的Shared命名空间,而该命名空间下不存在Extensions子命名空间,因此抛出CS0234错误。
解决方法
方法1:使用全局别名指定类库命名空间
在项目文件(.csproj)中给类库添加别名,明确区分类库和Web项目的Shared命名空间:
<ItemGroup> <!-- 如果是类库项目引用 --> <ProjectReference Include="..\Shared\Shared.csproj" Aliases="LibShared" /> <!-- 如果是NuGet包引用 --> <PackageReference Include="Shared" Version="x.x.x" Aliases="LibShared" /> </ItemGroup>
之后在_Imports.razor中通过别名引用:
@extern alias LibShared; @using LibShared::Shared.Extensions
方法2:修改类库根命名空间
直接修改类库的根命名空间,避免与Web项目的Shared目录冲突。比如将类库根命名空间从Shared改为AppCoreShared,之后在_Imports.razor中引用:
@using AppCoreShared.Extensions
方法3:使用完全限定名引用
在_Imports.razor中直接使用全局限定语法,明确指定要引用的是类库的Shared.Extensions:
@using global::Shared.Extensions
内容的提问来源于stack exchange,提问作者Saman Bahrekazemi
相关产品推荐
相关产品推荐

