Blazor Web 应用程序(.net 8 服务器) - Razor 组件库 RCL 作为 NuGet(本地源)w MainLayout 样式共享

问题描述 投票:0回答:1

找到答案后更新,供有问题的人将来参考

我想做什么:

在我的 web 应用程序上使用 MainLayout 来利用 RCL 的 razor 组件传入导航菜单并使用共享库样式等。

我有一个 RCL,其中包含 2 个 razor 组件“NavMenu.razor”和“SharedLayout.razor”。

因此任何新团队都可以引入 nuget 包并使用我们确定的默认 mainlayout 样式组件。 (稍后添加共享的 IdentityService)。

TLDR:在 Reddit 上回答,保留在这里供其他人使用,为了清晰和方便进行了一些编辑。

问题是我包含了一个标签,该标签显式导致 NuGet 生成 razor 文件并将它们放入添加 NuGet 的项目中,从而导致命名冲突和缺乏引用等各种问题。

这就是我的项目被引用时的样子:

代码在此设置中运行,只是为了快速分享上下文中发生的情况:

加载后看起来像这样:

我被困住的是什么 - 作为 NuGet

但是,下一步我想创建一个 NuGet 来跨项目共享 RCL。 所以我像这样设置 RCL 项目文件:

我标记为 false 的示例服务器项目。

** 注意项目中调用“includeRazorContentInPack”的标签,这就是问题**

然后推送到本地 feed nuget 位置。

然后我可以从另一个项目引用这个 nuget 源代码:

Nuget 的解决方案结构:

它将 NuGets razor 文件放入解决方案中。 (移动标签后解决)

问题:

我在编写时还没有编辑过以下问题部分。如需修复,请参阅答案评论。

日志文件 - Proj Reload(已解决?通过 clean) 我立即遇到了 Visual Studio 问题,告诉我项目加载时出现意外问题。

通过使用 _import 并完全声明组件,我可以清除此错误。 正在删除 .vs bin obj...

日志文件讨论了基本路径的问题: 如果有人认为有帮助,我可以提供完整的日志。

多个组件名称相同。

当我引入 nuget 时,我收到了来自 RCL NuGet 的 SharedLayout 和 NavMenu 的多个组件使用相同标记错误。

我在 NuGet 的 _Import.razor 中添加了 @using 语句来引用组件。使用 proj ref 时不需要,因为它们位于同一名称空间中。

我还在 SharedLayout.razor 文件中明确引用了 NavMenu 组件。

在实际 web 应用程序的 MainLayout 中,我完全引用了 SharedLayout...所有这些似乎都清除了这个错误。

我宁愿找到一种不同的方法来处理这个错误。由于该名称只有 1 个组件,因此错误有点奇怪,就像将组件复制到命名空间中一样。

没有错误,但失败

在生成 nuget 之前,我混合引用 RCL 中的组件,使其能够无错误地构建。但显然未能正确加载。这仍然是我在使用 RCL NuGet 时遇到的问题吗?还是将 @ body 发送到 Nuget 时存在一些不兼容性?

我期望能够引入包含 Razor 组件的 NuGet 包,并将参数和值传递到组件中。包括身体渲染片段。

使用 NuGets 样式表(未包含在本示例中,因为在此尝试之前发生了失败)。为了在使用共享布局组件的任何应用程序中实现一致的外观。

通过传入要显示的项目来允许动态导航。(如 MainLayout.razor 文件中所示,并按项目示例图片所示工作)。

像引用项目时一样工作。

.net asp.net-core msbuild blazor nuget-package
1个回答
0
投票

Reddit 来救援,并观察到我已将 IncludeRazorContentInPack 包含在我的包构建中。我按照我发现的有关将这些类库构建为 NuGet 的主题的一些信息进行了此操作,显然这对于我希望实现的目标来说是错误的举动。

© www.soinside.com 2019 - 2024. All rights reserved.