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



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

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

"找不到类型或命名空间"App"。

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

若要使用 Blazor,需要具有 VS2019 预览版或通过选中 VS2019 启用预览功能

工具 ->选项 ->环境 ->预览

功能 -> 使用 .NET Core SDK 的预览

或在旧版本的VS2019上

工具 -> 选项 -> 项目和解决方案 -> .NET Core

-> 使用.NET Core SDK预览

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

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

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

using Microsoft.AspNetCore.Components;
namespace BlazorDemo.Client
{
public partial class App : ComponentBase
{
}
}
<component type="typeof(App)" render-mode="ServerPrerendered" />

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

我会对@S ᴇM的解决方案发表评论,但我没有足够的"声誉"。

将此行添加到 .csproj 为我修复了它。

<RootNamespace>MyBlazorApp</RootNamespace>

也可以在"属性"页上的"默认命名空间"下设置它。

除了@S ᴇM答案之外,请确保您使用的是最新版本的Visual Studio。就我而言,我遵循了 @S ᴇM 提到的相同步骤,但仍然未显示选项Blazor 应用程序选项。

之后,我将视觉工作室更新到 16.3.7,现在在创建新项目时可以看到选项。 :)

将我的 .NET Core 3.1 应用程序迁移到 .NET 5.0 后,我遇到了同样的问题。我的应用程序运行良好,但自从我打开 App.razor 文件以来,出现了错误。

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

修复了"工具"-">

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

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

就我而言,问题是 _Host.cshtml 中的命名空间定义。将其重命名为正确的命名空间解决了该问题。

重新启动Visual Studio为我工作

这似乎是编译失败的通用消息。就我而言,错误列表没有用,但构建输出提供了更多信息(搜索"错误"),但它只有部分提示:

警告 CS8785:生成器"剃刀源生成器"生成失败 源。它不会导致输出和编译错误 可能因此而发生。异常类型为"KeyNotFoundException">

这仍然不够,所以我右键单击解决方案并选择"在终端中打开",然后在那里我手动执行了以下命令:

点网构建

这个给了我更多关于找不到实际键的信息(在我的例子中是"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 升级到新版本。我在VS6中使用.net 2022,并在将MudBlazor从6.02更新到6.03时出现此错误(后来我能够将MudBlazor更新到6.0.10)。

就我而言,问题是我的csproj文件中有以下包引用:

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

删除它解决了问题。

我的构建.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.

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

@using PieShopHrmClientWebAssembly.App.Shared

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

除了@Jonno答案之外,如果复制 razor 文件,则需要将"生成操作"更改为"文件属性中的内容

"

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

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

我这样做代码清理,包括删除不需要的 using 语句并开始收到此错误。 我(或工具)从 _Imports.razor 修复了它

。添加

@using {Site.Client}
@using {Site.Client}.Shared

回到我的_Imports.razor解决了这个问题。

在项目中进行了一些清理后,我的 IDE(Rider)在 csproj 中添加了一个带有几个文件(带有<AdditionalFiles>标签)的<ItemGroup>标签。删除这些为我解决了问题。

对于那些使用 Blazor 的人来说,我遇到了这个错误并担心命名空间。 原来我在页面中有一个格式错误的标签:

<button type="button" @onclick="@(() => SetActivity("Office"))>Office</button>

(注意 onclick 事件中缺少引号)

这足以产生这个明显无关的错误(尽管Rider轻轻地在关闭按钮标签下划线,表明它没有关闭它理解的任何内容)。

我在生成 Blazor 项目时遇到了完全相同的错误,并且能够通过仅保留每个 .NET SDK 的一个主要版本来解决此问题。

在我安装之前:

  • .NET 5 开发工具包
  • .NET 6 开发工具包
  • .NET 7.0.4xx SDK
  • .NET 7.0.1xx SDK

SDK 的不同主要版本和次要版本并排保存。只保留一个 .NET 7 SDK(在我的情况下,我删除了版本 7.0.4xx)解决了错误。

完整上下文:我有多个 .NET 7 SDK,因为我使用的是 LTSC 版本的 Visual Studio 2022:https://learn.microsoft.com/en-us/visualstudio/productinfo/vs-servicing#long-term-servicing-channel-ltsc-support

我的 Visual Studio 2022 (17.4) 版本使用的是 7.0.1xx,但我也错误地安装了它的较新版本。当 VS 构建我的解决方案时,它使用的是最新的 SDK 版本而不是它自己的版本,这与源生成器有轻微的兼容性问题;它给了我构建警告,内容如下:Warning CS9057 The analyzer assembly 'C:Program Filesdotnetsdk7.0.307SdksMicrosoft.NET.Sdk.Razorsource-generatorsMicrosoft.NET.Sdk.Razor.SourceGenerators.dll' references version '4.6.0.0' of the compiler, which is newer than the currently running version '4.4.0.0'.

如果你在已安装程序下查看,它应该列出Visual Studio版本的SDKMicrosoft类似于Visual Studio的.NET SDK 7.0.110。这是VS应该使用的版本,但它似乎与安装的较新(7.0.4xx)版本混淆了。

相关内容

最新更新