在blazor中添加全局using指令

3
在命名空间'MyClassLibrary.Models'中找不到类型或命名空间名为'XXX'的名称(是否缺少程序集引用?)。该错误指的是BlazorProject\MyPager.azor.g.cs文件。 我在执行以下操作后遇到了此错误:
  1. "Blazor项目"中创建了一个.cs类型的文件,并在其中使用关键字global添加了所有全局指令。
  2. 更改了"类库"中的一些命名空间。
项目结构:
  1. 使用类库的Blazor服务端项目
  2. 类库。
当我访问页面时,看不到任何错误,错误只出现在VS中。我尝试清理解决方案、重新生成、关闭VS并重新打开,但都无法解决问题。我正在使用VS22和.Net6。 注意:我的blazor项目中也有_Imports.razor文件。

1
关闭VS并从项目中删除binobj文件夹-如果仍然存在问题,请执行相同操作,但也删除.vs文件夹。 - Mister Magoo
@MisterMagoo,谢谢。我认为我们不能将 _Import.razorglobal 结合起来吗? - Nb777
根据此处跟踪的问题,似乎全局using语句不适用于Razor:Resolve issues with global usings in Razor compiler #7539 - Wiseguy
2个回答

6

@MisterMagoo,非常感谢。 你说的方法很好用,但我还需要在global directive文件和_Imports.razor文件中重复相同的命名空间,所以解决方案如下:

  • In GlobalUsings.cs:

    global using Microsoft.AspNetCore.Components;
    global using Microsoft.AspNetCore.Components.Forms;
    
  • In _Imports.razor if you need the same namespaces in your razor pages, then you have to repeat them.

    using Microsoft.AspNetCore.Components;
    using Microsoft.AspNetCore.Components.Forms;
    

1
记住,“全局 using”的作用域并不真正全局。它是当前编译的范围,通常意味着当前项目(而不是当前解决方案)。如果您想在解决方案中的两个不同项目中使用此功能(例如,一个 Blazor 服务器项目和一个类库),则需要在两个项目中都创建“全局 using”语句。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接