You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一解决方案的多个.NET 8 Blazor项目间共享MudBlazor对话框?

.NET 8 Blazor跨项目共享MudBlazor对话框解决方案

核心问题分析

你的问题本质是Blazor组件跨项目访问的基础配置缺失:普通类库无法承载Blazor组件,组件默认访问权限限制,以及消费项目的组件注册/引用配置不到位。

分步解决

1. 将SharedLibrary转为Razor类库(RCL)

普通类库不支持Blazor组件编译,必须用Razor类库:

  • 若SharedLibrary是普通类库,直接修改其.csproj文件,替换为RCL的SDK配置:
<Project Sdk="Microsoft.NET.Sdk.Razor">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="MudBlazor" Version="你使用的版本号" />
  </ItemGroup>
</Project>
  • 保存后重新加载项目,确保MudBlazor包已正确安装在SharedLibrary中。

2. 公开对话框组件的访问权限

Blazor组件默认是internal,跨项目必须设为public:
打开CreateNewFolder.razor文件,确保组件类是公开的:

@code {
    // 显式声明public类
    public partial class CreateNewFolder : ComponentBase
    {
        // 你的对话框逻辑代码
    }
}

如果用代码后置文件(.razor.cs),同样要把类修饰为public:

namespace SharedLibrary.Shared;

public partial class CreateNewFolder
{
    // 逻辑代码
}

3. 消费项目(Project1/Project2)的配置检查

  • 确认项目引用:右键Project1/Project2 → 添加 → 项目引用 → 勾选SharedLibrary,确保引用是最新的;
  • 注册MudBlazor服务:在Program.cs中确认已添加MudBlazor服务(SharedLibrary不需要重复注册,消费项目注册即可):
builder.Services.AddMudServices();
  • 导入命名空间:在消费项目的_Imports.razor中添加SharedLibrary的命名空间,避免每个页面手动写@using:
@using SharedLibrary.Shared
@using MudBlazor

4. 修正对话框调用的异步问题

原代码中DialogService.ShowAsync是异步方法,必须用await调用,否则可能引发异常:

private async Task ShowNewFolder(MouseEventArgs _obj)
{
    ShowNewFolderDialog = true;
    var options = new DialogOptions { CloseOnEscapeKey = true, MaxWidth = MaxWidth.Medium };
    await DialogService.ShowAsync<CreateNewFolder>("Create New Folder", options);
}

5. 清理缓存并重建解决方案

  • 右键解决方案 → 清理解决方案;
  • 删除所有项目下的bin和obj文件夹;
  • 右键解决方案 → 重建解决方案;

额外排查点

  • 确认所有项目的目标框架都是.NET 8,版本一致;
  • 若IDE仍提示类型找不到,重启IDE(VS/Rider有时会缓存旧的项目信息);
  • 检查SharedLibrary中对话框组件是否正确引用了MudBlazor的组件(比如MudDialog、MudButton等),没有遗漏命名空间。

内容的提问来源于stack exchange,提问作者soomon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 09:24:56