如何在 Razor 视图中区分两个程序集?

问题描述 投票:0回答:1

我有一个扩展方法:

.ToDescription()

此方法存在于

MyExtensions
命名空间中的
My.Methods
类中,位于名为
MyAssembly1
的程序集中。我在
MyExtensions
命名空间中的
My.Methods
类中还有其他扩展方法,但位于名为
MyAssembly2
的不同程序集中。

我的项目中引用了这两个程序集。

MyAssembly2.My.Methods.MyExtensions
不包含
.ToDescription()
方法。

我希望在 Razor 视图中使用

.ToDescription()
扩展方法,但我收到了不明确的引用错误:

“MyExtensions”类型同时存在于“MyAssembly1”和“MyAssembly2”中

当命名空间和类相同时,有没有办法告诉 Razor 视图使用哪个程序集?

注意:我确实尝试对此进行一些研究,但由于问题的复杂性,没有返回可用的结果。

asp.net-mvc asp.net-core
1个回答
0
投票

我尝试重现你的问题,在.net 8中没问题,你可以尝试更新.net版本。

如果您想保留 .net 版本,有一个解决方法:

在项目文件中:

<ItemGroup>
    <ProjectReference Include="..\ClassLibrary1\ClassLibrary1.csproj" >
      <Aliases>CustomTypes</Aliases>
    </ProjectReference>
    <ProjectReference Include="..\ClassLibrary2\ClassLibrary2.csproj" />
  </ItemGroup>

在program.cs中:

extern alias CustomTypes;
global using __Extension = CustomTypes::My.Methods;

在您的剃刀视图中:

@using __Extension

这是文档相关错误CS0433,希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.