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 组件创作 :
@using Microsoft.AspNetCore.Components.Web
手动将该文件添加到所生成项目的根目录中。
- 在命令行界面中,将 Razor 类库模板 (
razorclasslib
) 与 dotnet new 命令一起使用 。下面的示例创建了名为MyComponentLib1
的 RCL。执行命令时,自动创建包含MyComponentLib1
的文件夹:
dotnet new razorclasslib -o MyComponentLib1
备注
如果在从模板生成 RCL 时使用 -s|—support-pages-and-views
开关,还请通过以下内容将“Imports.razor”文件添加到所生成项目的根目录中,以启用 Razor 组件创作 :
@using Microsoft.AspNetCore.Components.Web
手动将该文件添加到所生成项目的根目录中。
- 若要将库添加到现有项目中,请在命令行界面中使用 dotnet add reference 命令。在下面的示例中,将 RCL 添加到应用中。使用指向库的路径从应用的项目文件夹执行以下命令:
dotnet add reference {PATH TO LIBRARY}
使用库组件Consume a library component
若要使用另一项目的库中定义的组件,请使用以下任一方法:
- 使用命名空间的完整类型名称。
- 使用 Razor 的 @using 指令。单个组件可以按名称添加。
在下面的示例中,MyComponentLib1
是一个包含 SalesReport
组件的组件库。
SalesReport
组件可通过其命名空间的完整类型名称进行引用:
<h1>Hello, world!</h1>
Welcome to your new app.
<MyComponentLib1.SalesReport />
如果将库纳入作用域内,该组件也可通过 @using
指令进行引用:
@using MyComponentLib1
<h1>Hello, world!</h1>
Welcome to your new app.
<SalesReport />
在顶级 _Import.razor 文件中包含 @using MyComponentLib1
指令,使库的组件可用于整个项目 。将指令添加到任何级别的 _Import.razor 文件,将命名空间应用于文件夹中的单个页面或一组页面 。
生成并打包库,再将其传送到 NuGetBuild, pack, and ship to NuGet
由于组件库是标准的 .NET 库,因此将它们打包并传送到 NuGet 与将任何库打包并传送到 NuGet 没有什么区别。在命令行界面中使用 dotnet pack 命令,执行打包操作:
dotnet pack
在命令行界面中使用 dotnet nuget push 命令,将包上传到 NuGet。
创建包括静态资源的 Razor 组件类库Create a Razor components class library with static assets
RCL 可以包括静态资产。静态资产可用于任何使用该库的应用。有关详细信息,请参阅 ASP.NET Core 的类库中的可重用 Razor UI。