Blazor 找不到类型或命名空间名称 'App'(是否缺少 using 指令或程序集引用?)

Blazor the type or namespace name 'App' could not be found (are you missing a using directive or an assembly reference?)

我已经在 Microsoft Visual Studio Community 2019 版本 16.1.3 的 Blazor 中设置了基本应用程序,并且我已经尝试了 .NET Core SDK 3.0.100-preview5-011568 和 SDK 3.0 的两个版本。 100-preview6-012264.

我还安装了 Blazor 扩展,但是当我在没有对任何文件进行任何修改的情况下进行构建时,构建失败并出现以下错误:

"The type or namespace "App" could not be found.

我们将不胜感激任何帮助。谢谢

要使用 Blazor,您需要拥有 VS2019 预览版或通过选中

在 VS2019 上启用预览功能

Tools -> Options -> Environment -> Preview Features -> Use previews of the .NET Core SDK

或旧版本的 VS2019

Tools -> Options -> Projects and Solutions -> .NET Core -> Use previews of the .NET Core SDK

复选框,然后重新加载解决方案并构建。

除了@SᴇM 的回答,请确保您使用的是最新版本的Visual studio。对于我的情况,我遵循了@SᴇM 提到的相同步骤,但仍然没有显示选项 Blazor App 选项。

之后,我将 visual studio 更新为 16.3.7,现在在创建新项目时可以看到该选项。 :)

在我的例子中,问题是我的 csproj 文件中有以下包引用:

<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />

删除这个问题解决了。

我的 build.log 文件中的以下输出帮助我找到了这个

1>/usr/local/share/dotnet/sdk/3.1.402/Sdks/Microsoft.NET.Sdk.Razor/build/netstandard2.0/Sdk.Razor.CurrentVersion.targets(404,5): warning RAZORSDK1006: Detected Razor language version downgrade. This is typically caused by a reference to the Microsoft.AspNetCore.Razor.Design package. Consider removing this package reference.
<component type="typeof(App)" render-mode="ServerPrerendered" />

我得到的错误(在 Blazor 服务器应用程序中使用 Visual Studio 2019 v16.8.2 & .NET 5)指向上面一行的“应用程序”部分(在文件 _Host.cshtml). 这是在从另一个项目复制一些代码并遇到不同(应用程序)命名空间的问题后发生的,我在尝试构建时遇到了这个错误(没有其他错误)。 @SᴇM 的回答帮助我解决了问题 - 我关闭并重新打开我的解决方案,然后在构建时出现命名空间错误 - 我可以解决...修复后它起作用了。

我会评论@SᴇM 的解决方案,但我没有足够的'reputation'。

将我的 .NET Core 3.1 应用程序迁移到 .NET 5.0 后,我遇到了同样的问题。我的应用程序工作正常,但自从我打开 App.razor 文件后显示错误。

“找不到类型或命名空间名称 'pageName'”,页面正常显示。

修复了工具 -> 选项 -> 环境 -> 预览功能 -> 使用 .NET Core SDK 预览的问题。 还需要重新启动 Visual Studio 并重新加载项目。

这有点奇怪,因为我刚迁移到 .NET 5.0

除了@Jonno 的回答,如果您复制剃刀文件,您需要在文件属性中将生成操作更改为内容

将我的项目从“App”重命名为“GCL-App”对我有用,因为它引发了“包含上述错误的循环依赖问题。

在我的例子中,问题是 _Host.cshtml 中的命名空间定义。将其重命名为正确的命名空间解决了这个问题。

我遇到了类似的错误,重新启动 Visual Studio 2019 为我修复了它。

对我来说,使用 using 语句添加命名空间是可行的。

@using PieShopHrmClientWebAssembly.App.Shared

这里 PieShopHrmClientWebAssembly.App 是我的 Blazor 项目名称。

重新启动 Visual Studio 对我有效

对我来说,Blazor 应用是在本地构建的,而不是在 Azure 管道中构建的。

添加 App.razor.cs 解决了构建问题。

using Microsoft.AspNetCore.Components;

namespace BlazorDemo.Client
{
    public partial class App : ComponentBase
    {
    }
}

这似乎是编译失败的一般消息。在我的例子中,错误列表没有用,但构建输出有更多信息(搜索“错误”)但它只有部分提示:

warning CS8785: Generator 'RazorSourceGenerator' failed to generate source. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'KeyNotFoundException'

还是不够,所以我right-clicked解决方案并选择“在终端中打开”,然后我手动执行了这个命令:

dotnet build

这个给了我一些关于未找到实际密钥的更多信息(在我的例子中是“TableItem”)。这导致我进行了一些试验和错误,并且我有一些具有相似组件名称的冲突库(BlazorTable 的自定义副本和 MudBlazor 的新 nuget 版本)。

I renamed <Table> to <BlazorTable>, and later to <BlaTable> 
(and ended up using <BlazorTable.BlaTable> to avoid repeating the namespace in class name)

由于我仍然遇到错误,我还删除了所有“@using BlazorTable”,而是在所有标记中包含名称空间,包括枚举案例中的属性值:

<BlazorTable.BlaTable TableItem="BillPlanListModel"
    Items=Rows 
    SelectionType=BlazorTable.SelectionType.Single>
        <BlazorTable.Column TableItem="BillPlanListModel" />
</BlazorTable.BlaTable>

这有点痛苦,但经过几个小时的工作对我的情况有所帮助,现在我可以将 MudBlazor 升级到新版本。我在 VS2022 中使用 .net 6,在将 MudBlazor 从 6.02 更新到 6.03 时出现此错误(后来我能够将 MudBlazor 更新到 6.0.10)。