Blazor 无法从其他文件夹找到引用的组件

Sos*_*der 10 c# blazor

我正在尝试 Blazor WebAssembly,并希望在 Visual Studio 预先生成的示例项目之上创建一些新组件。

所以,基本上我最终得到的是以下文件夹结构:

Project
\ Components
  \ Navigation
    \ BurgerMenu.razor
      BurgerMenu.razor.css
      BurgerMenu.razor.less
\ Shared
  \ MainLayout.razor
    MainLayout.razor.css
    MainLayout.razor.less
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。这是我的组件:

MainLayout.razor:

@using Components.Navigation;

@inherits LayoutComponentBase

<div class="sidebar">
    <BurgerMenu />
</div>

<div class="LayoutContainer">
    @Body
</div>
Run Code Online (Sandbox Code Playgroud)

汉堡菜单.razor:

<div>
    Test Component
</div>

@code
{
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,到目前为止还没有什么值得大书特书的。

但是,我无法让它正常工作。每个构建都会抱怨warning RZ10012: Found markup element with unexpected name 'BurgerMenu'. If this is intended to be a component, add a @using directive for its namespace.

所以,我现在有点迷失了。根据官方文档,@using 语句应该是从文件夹导入组件的正确方法 - 文件夹就在那里。然而,这仍然行不通。

如果我将 BurgerMenu.razor 移动到 /Shared 文件夹中,则一切正常。

那么,我做错了什么?

Nei*_*l W 16

我原以为 using 语句需要包含您的项目名称:

@using Project.Components.Navigation;
Run Code Online (Sandbox Code Playgroud)

如果我尝试与您类似的操作,编辑器会用红色强调 using 语句(不带项目名称)。


Neg*_*tar 16

重新启动 Visual Studio 后,这个问题已解决。我正在运行 Professional 2019,显然智能感知卡住了。

  • 相同的。我使用的是 Visual Studio Community Edition,它对于 Blazor 来说绝对不是太好。 (2认同)