ASP.NET Core Razor 组件类库ASP.NET Core Razor components class libraries

本文内容

作者:Simon Timms

组件可在 Razor 类库 (RCL) 中跨项目共享。“Razor 组件类库”可以包含在以下各项中 :

  • 解决方案中的另一个项目。
  • NuGet 程序包。
  • 引用的 .NET 库。

正如组件是常规的 .NET 类型一样,RCL 提供的组件也是普通的 .NET 程序集。

创建 RCLCreate an RCL

按照 ASP.NET Core Blazor 入门 文章中的指导,为 Blazor 配置环境。

  • 创建新项目。
  • 选择“Razor 类库” 。选择“下一步” 。
  • 在“创建新的 Razor 类库”对话框中,选择“创建” 。
  • 在“项目名称”字段提供项目名称,或接受默认项目名称 。本主题中的示例使用项目名称 MyComponentLib1。选择“创建” 。
  • 将 RCL 添加到一个解决方案:
    • 右键单击该解决方案。选择“添加” > “现有项目” 。
    • 导航到 RCL 的项目文件。
    • 选择 RCL 的项目文件 (.csproj) 。
  • 从应用中添加 RCL 的引用:
    • 右键单击该应用项目。选择“添加” > “引用” 。
    • 选择 RCL 项目。选择“确定” 。

备注

如果在从模板生成 RCL 时选中了“支持页和视图”复选框,还请通过以下内容,将“Imports.razor”文件添加到所生成项目的根目录中,以启用 Razor 组件创作 :

  1. @using Microsoft.AspNetCore.Components.Web

手动将该文件添加到所生成项目的根目录中。

  • 在命令行界面中,将 Razor 类库模板 (razorclasslib) 与 dotnet new 命令一起使用 。下面的示例创建了名为 MyComponentLib1 的 RCL。执行命令时,自动创建包含 MyComponentLib1 的文件夹:
  1. dotnet new razorclasslib -o MyComponentLib1

备注

如果在从模板生成 RCL 时使用 -s|—support-pages-and-views 开关,还请通过以下内容将“Imports.razor”文件添加到所生成项目的根目录中,以启用 Razor 组件创作 :

  1. @using Microsoft.AspNetCore.Components.Web

手动将该文件添加到所生成项目的根目录中。

  • 若要将库添加到现有项目中,请在命令行界面中使用 dotnet add reference 命令。在下面的示例中,将 RCL 添加到应用中。使用指向库的路径从应用的项目文件夹执行以下命令:
  1. dotnet add reference {PATH TO LIBRARY}

使用库组件Consume a library component

若要使用另一项目的库中定义的组件,请使用以下任一方法:

  • 使用命名空间的完整类型名称。
  • 使用 Razor 的 @using 指令。单个组件可以按名称添加。

在下面的示例中,MyComponentLib1 是一个包含 SalesReport 组件的组件库。

SalesReport 组件可通过其命名空间的完整类型名称进行引用:

  1. <h1>Hello, world!</h1>
  2. Welcome to your new app.
  3. <MyComponentLib1.SalesReport />

如果将库纳入作用域内,该组件也可通过 @using 指令进行引用:

  1. @using MyComponentLib1
  2. <h1>Hello, world!</h1>
  3. Welcome to your new app.
  4. <SalesReport />

在顶级 _Import.razor 文件中包含 @using MyComponentLib1 指令,使库的组件可用于整个项目 。将指令添加到任何级别的 _Import.razor 文件,将命名空间应用于文件夹中的单个页面或一组页面 。

生成并打包库,再将其传送到 NuGetBuild, pack, and ship to NuGet

由于组件库是标准的 .NET 库,因此将它们打包并传送到 NuGet 与将任何库打包并传送到 NuGet 没有什么区别。在命令行界面中使用 dotnet pack 命令,执行打包操作:

  1. dotnet pack

在命令行界面中使用 dotnet nuget push 命令,将包上传到 NuGet。

创建包括静态资源的 Razor 组件类库Create a Razor components class library with static assets

RCL 可以包括静态资产。静态资产可用于任何使用该库的应用。有关详细信息,请参阅 ASP.NET Core 的类库中的可重用 Razor UI

其他资源Additional resources