【问题标题】:Blazor: The type or namespace name 'ApplicationPartAttributeAttribute' does not exist in the namespace 'Microsoft.AspNetCore.Mvc.ApplicationParts'Blazor:命名空间“Microsoft.AspNetCore.Mvc.ApplicationParts”中不存在类型或命名空间名称“ApplicationPartAttributeAttribute”
【发布时间】:2021-06-10 21:41:04
【问题描述】:

当我尝试编译我的 Blazor WebAssembly 应用程序时遇到此错误。

error CS0234: The type or namespace name 'ApplicationPartAttributeAttribute' does not exist in the namespace 'Microsoft.AspNetCore.Mvc.ApplicationParts' (are you missing an assembly reference?)

原因是因为我使用的库使用了Microsoft.AspNetCore.Mvc.Core,而且它似乎与 blazor Web Assembly 不太兼容,

我确实测试过创建一个服务器端 Blazor 应用程序,它工作正常。

有没有办法让错误“消失”?我想使用那个库,我想坚持使用 Blazor WA。

【问题讨论】:

  • 我总是得到这种东西。 Blazor 中的 VS Intellisense 是一团糟,我认为现在我们只能接受它。
  • 您使用的是哪个版本的 Asp.net Core?从official document可以看出类名应该是ApplicationPartAttribute,而不是ApplicationPartAttributeAttributeattribute是重复的)。 ApplicationPartAttribute 类适用于 Asp.net Core 3.0、3.1、5.0。
  • @Bennyboy1973 是的,好像是这样,因为它是一个内部库,我最终将它一分为二,但我担心更大的库会发生类似的情况:/
  • @ZhiLv 我用的是net5;我主要担心的是为什么它在 blazor 服务器端而不是在 WA 中工作。
  • 哪个库? MVC 的东西不适用于 WebAssembly。

标签: c# asp.net-core blazor blazor-webassembly


【解决方案1】:

来自thisthis,我建议您不要引用支持页面和视图的 razor 类库或引用面向 ASP.NET Core 的库。这在 Blazor Webassembly 中不起作用。

我的建议是,您从共享库中提取出您直接需要引用的类,并在您的 wasm 项目中使用它们,而无需引用整个库,您甚至可以分解这些类并创建一个新库引用,对 asp.net 核心框架没有任何依赖。

我粘贴的其中一个链接的摘录说:“感谢您与我们联系。这不是我们建议遵循的模式。您不能从 Blazor WebAssembly 应用程序引用 MVC 二进制文件。”

【讨论】:

    【解决方案2】:

    错误 CS0234:类型或命名空间名称 命名空间中不存在“ApplicationPartAttributeAttribute” 'Microsoft.AspNetCore.Mvc.ApplicationParts'(您是否缺少 汇编参考?)

    首先,从官方文档可以看出类名应该是ApplicationPartAttribute,而不是ApplicationPartAttributeAttributeattribute是重复的)。请检查你的代码并修改它。

    我主要关心的是为什么它在 blazor 服务器端而不是在 华盛顿州。

    Microsoft.AspNetCore.Mvc.ApplicationParts 包在 Blazor 服务器端工作,而不是在 WA 应用程序中工作。

    对于这个问题,我假设您正在创建一个主要 Blazor 托管模型独立 Blazor WebAssembly 应用程序,对于这种应用程序,它是 client-侧面,并且没有后端 ASP.NET Core 应用程序来提供其文件,因此您不能使用ApplicationParts

    但是,如果您创建托管的 Blazor WebAssembly 应用程序:在创建 WebAssembly 应用程序时,选择“ASP.NET Core 托管”选项。

    之后,Blazor WebAssembly 应用程序如下所示:

    如我们所见,应用程序包含三个项目,然后我们可以在服务器项目中使用ApplicationParts。因此,您可以创建一个托管的 Blazor WebAssembly 应用程序。

    更多详细信息,请参阅Blazor WebAssembly

    【讨论】:

    • 不幸的是,这个解决方案不能解决我的问题,我确实有一个客户端和一个服务器,但是在客户端上我必须访问 Wrapper<T> 这个包装器在一个使用 mvc.core 包的库中.我最终拆分了图书馆。还要注意ApplicationPartAttributeAttribute 中的名称问题,这是自动生成的,所以我真的不知道为什么会这样创建它。
    猜你喜欢
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 2022-01-11
    • 2021-10-15
    相关资源
    最近更新 更多