我正在尝试 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,显然智能感知卡住了。