【问题标题】:"Found markup element with unexpected name" -- what to do after renaming Blazor web client?“找到具有意外名称的标记元素”——重命名 Blazor Web 客户端后该怎么办?
【发布时间】:2021-05-15 01:28:42
【问题描述】:

我的 Blazor 应用程序运行良好(例如在演示中——共享项目、服务器项目和客户端项目)。我需要移动整个解决方案并重命名项目。结果是我在网络客户端出现了奇怪的错误:

App.razor:警告 RZ10012:发现带有意外名称“RedirectToLogin”的标记元素。如果它打算成为一个组件,请为其命名空间添加一个 @using 指令。

Index.razor:警告 RZ10012:发现带有意外名称“SurveyPrompt”的标记元素。如果它打算成为一个组件,请为其命名空间添加一个 @using 指令。

App.razor:错误 CS0246:找不到类型或命名空间名称“MainLayout”(您是否缺少 using 指令或程序集引用?)

App.razor.g.cs:错误 CS1662:无法将 lambda 表达式转换为预期的委托类型,因为块中的某些返回类型不能隐式转换为委托返回类型

App.razor:错误 CS0246:找不到类型或命名空间名称“MainLayout”(您是否缺少 using 指令或程序集引用?)

当然存在“MainLayout”,与“SurveyPrompt”相同。我删除了整个“bin”目录、“obj”、“.vs”,重新启动 VS 并再次构建解决方案,结果相同。

让我更加困惑的是“RedirectToLogin”,例如一个组件。我有自己的组件,在几个页面上使用过,但没有任何警告,所以可以看到。那么为什么“RedirectToLogin”不是呢?

我猜想暂时可以忽略编译剃须刀文件的错误,因为它可能是由以前的错误和警告引起的。

为了记录,我必须重命名项目,所以我无法通过还原所有名称更改来解决这个问题。

【问题讨论】:

    标签: c# refactoring blazor


    【解决方案1】:

    在针对“MainLayout”或“RedirectToLogin”的每个警告/错误报告中,我编辑了给定文件并为其添加了整个命名空间。看着他们的名字“BlazorApp.Client.Shared.MainLayout”,我意识到可能会发生与项目命名空间的冲突——“BlazorApp.Client.Shared”是客户端中的文件夹,而“BlazorApp.Shared”是项目。

    另一方面,如果两个不同的可访问命名空间中有两个相同的实体,则可能会发生冲突。命名空间是可访问的,但例如“MainLayout”仅定义一次。

    问题解决了,可惜我不完全明白为什么它之前工作以及重命名后坏了什么。

    【讨论】:

      猜你喜欢
      • 2021-02-25
      • 2020-02-08
      • 2011-03-12
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多