项目

ABP CLI

ABP CLI(命令行界面)是一个命令行工具,用于为基于ABP的解决方案或 ABP Studio 功能执行一些常见操作。

安装

ABP CLI 是一个 .NET 全局工具。使用命令行窗口安装它:

dotnet tool install -g Volo.Abp.Studio.Cli

要更新现有安装:

dotnet tool update -g Volo.Abp.Studio.Cli

全局选项

虽然每个命令可能都有一组选项,但有一些全局选项可以与任何命令一起使用:

  • --skip-cli-version-check-scvc:跳过检查 ABP CLI 的最新版本。如果不指定,它将检查最新版本,并在有更新的 ABP CLI 版本时显示警告消息。
  • --skip-extension-version-check-sevc:跳过检查 ABP CLI 扩展的最新版本。如果不指定,它将检查最新版本,并在有更新的 ABP CLI 扩展版本时下载最新版本。
  • --old:ABP CLI 有两个变体:Volo.Abp.Studio.CliVolo.Abp.Cli。新功能/模板被添加到 Volo.Abp.Studio.Cli 中。但是,如果你想使用旧版本,可以在命令的末尾使用此选项。例如:abp new Acme.BookStore --old
  • --help-h:显示指定命令的帮助信息。

命令

在详细解释各个命令之前,以下是所有可用命令的列表:

help

显示 ABP CLI 的基本用法。

用法:

abp help [command-name]

示例:

abp help        # 显示通用帮助。
abp help new    # 显示关于 "new" 命令的帮助。

cli

更新或移除 ABP CLI。

用法:

abp cli [command-name]

示例:

abp cli update
abp cli update --preview
abp cli update --version 1.0.0
abp cli remove
abp cli check-version
abp cli clear-cache

new

基于 ABP 启动模板 生成一个新的解决方案。参见 新建解决方案示例命令

用法:

abp new <solution-name> [options]

示例:

abp new Acme.BookStore
  • Acme.BookStore 是解决方案名称。
  • 通常的命名约定是类似于 YourCompany.YourProject。但是,你也可以使用不同的命名,如 YourProject(单层命名空间)或 YourCompany.YourProduct.YourModule(三层命名空间)。

更多示例,请访问 ABP CLI 创建解决方案示例

选项

  • --template-t:指定模板名称。默认模板名称是 app,用于生成应用程序解决方案。可用模板:
    • empty:空解决方案模板。
    • app:应用程序模板。附加选项:
      • --ui-framework-u:指定 UI 框架。默认框架是 mvc。可用框架:
        • mvc:ASP.NET Core MVC。此模板有一些附加选项:
          • --tiered:创建一个分层解决方案,其中 Web 层和 Http API 层在物理上是分离的。如果不指定,则创建一个分层较少的解决方案,该方案复杂性较低,适用于大多数场景。(适用于 Team 或更高许可证
        • angular:Angular UI。此模板有一些附加选项:
          • --tiered:身份认证服务器项目作为单独的项目运行,且运行在不同的端点。它将身份认证服务器与 API 宿主应用程序分离。如果不指定,服务器端将只有一个端点。(适用于 Team 或更高许可证
          • --progressive-web-app-pwa:指定项目为渐进式 Web 应用程序。
        • blazor-webapp:Blazor Web App UI。此模板有一些附加选项:
          • --tiered:身份认证服务器和 API 宿主项目作为单独的项目运行,且运行在不同的端点。它有 3 个启动项目:HttpApi.HostAuthServerBlazor,每个项目运行在不同的端点。如果不指定,你的 Web 项目将只有一个端点。
          • --progressive-web-app-pwa:指定项目为渐进式 Web 应用程序。
        • blazor:Blazor UI。此模板有一些附加选项:
          • --tiered:身份认证服务器项目作为单独的项目运行,且运行在不同的端点。它将身份认证服务器与 API 宿主应用程序分离。如果不指定,服务器端将只有一个端点。(适用于 Team 或更高许可证
          • --progressive-web-app-pwa:指定项目为渐进式 Web 应用程序。
        • blazor-server:Blazor Server UI。此模板有一些附加选项:
          • --tiered:身份认证服务器和 API 宿主项目作为单独的项目运行,且运行在不同的端点。它有 3 个启动项目:HttpApi.HostAuthServerBlazor,每个项目运行在不同的端点。如果不指定,你的 Web 项目将只有一个端点。(适用于 Team 或更高许可证
        • maui-blazor:Blazor Maui UI(适用于 Team 或更高许可证)。此模板有一些附加选项:
          • --tiered:身份认证服务器和 API 宿主项目作为单独的项目运行,且运行在不同的端点。它有 3 个启动项目:HttpApi.HostAuthServerBlazor,每个项目运行在不同的端点。如果不指定,你的 Web 项目将只有一个端点。
        • no-ui:无 UI。不会创建前端层。此模板有一些附加选项:
          • --tiered:身份认证服务器项目作为单独的项目运行,且运行在不同的端点。它将身份认证服务器与 API 宿主应用程序分离。如果不指定,服务器端将只有一个端点。(适用于 Team 或更高许可证
      • --mobile-m:指定移动应用程序框架。默认值是 none。可用框架:
        • none:无移动应用程序。
        • react-native:React Native。此移动选项仅适用于活跃的 许可证所有者
        • maui:MAUI。此移动选项仅适用于 ABP。(适用于 Team 或更高许可证
      • --database-provider-d:指定数据库提供程序。默认提供程序是 ef。可用提供程序:
        • ef:Entity Framework Core。
        • mongodb:MongoDB。
      • --connection-string-cs:覆盖所有 appsettings.json 文件中的默认连接字符串。对于 EF Core,默认连接字符串是 Server=localhost;Database=MyProjectName;Trusted_Connection=True,并且配置为使用 SQL Server。如果你想使用 EF Core,但需要更改数据库管理系统,可以在(创建解决方案后)按照此处描述 进行更改。注意: 指定连接字符串时,请确保用双引号括起来,例如:--connection-string "Server=localhost;Database=MyProjectName;Trusted_Connection=True"
      • --skip-migrations-sm:跳过创建初始数据库迁移步骤。
      • --skip-migrator-smr:跳过运行数据库迁移程序步骤。
      • --public-website:公共网站是一个面向公众的网站,用于描述你的项目、列出你的产品并进行搜索引擎优化以达到营销目的。用户可以通过此网站在你的网站上登录和注册。此选项仅包含在 PRO 模板中。
        • --without-cms-kit:当你向解决方案添加公共网站时,它会自动包含 CmsKit 模块。如果你不想包含 CmsKit,可以使用此参数。
      • --separate-tenant-schema:为租户模式创建不同的 DbContext。如果不指定,租户模式将与宿主模式共享。此选项仅包含在 PRO 模板中。
      • --sample-crud-page-scp:将 BookStore 示例添加到你的解决方案中。
      • --theme-th:指定主题。默认主题是 leptonx。可用主题:
        • leptonx:LeptonX 主题。(适用于 Team 或更高许可证
        • leptonx-lite:LeptonX-Lite 主题。
        • basic:基础主题。
      • --use-open-source-template-uost:使用开源模板。(适用于 Team 或更高许可证
    • app-nolayers:单层应用程序模板。附加选项:
      • --ui-framework-u:指定 UI 框架。默认框架是 mvc。可用框架:
        • mvc:ASP.NET Core MVC。此模板有一些附加选项:
        • angular:Angular UI。此模板有一些附加选项:
        • blazor:Blazor UI。此模板有一些附加选项:
        • blazor-server:Blazor Server UI。此模板有一些附加选项:
        • no-ui:无 UI。不会创建前端层。此模板有一些附加选项:
      • --database-provider-d:指定数据库提供程序。默认提供程序是 ef。可用提供程序:
        • ef:Entity Framework Core。
        • mongodb:MongoDB。
      • --connection-string-cs:覆盖所有 appsettings.json 文件中的默认连接字符串。对于 EF Core,默认连接字符串是 Server=localhost;Database=MyProjectName;Trusted_Connection=True,并且配置为使用 SQL Server。如果你想使用 EF Core,但需要更改数据库管理系统,可以在(创建解决方案后)按照此处描述 进行更改。注意: 指定连接字符串时,请确保用双引号括起来,例如:--connection-string "Server=localhost;Database=MyProjectName;Trusted_Connection=True"
      • --skip-migrations-sm:跳过创建初始数据库迁移步骤。
      • --skip-migrator-smr:跳过运行数据库迁移程序步骤。
      • --sample-crud-page-scp:将 BookStore 示例添加到你的解决方案中。
      • --theme:指定主题。默认主题是 leptonx。可用主题:
        • leptonx:LeptonX 主题。(适用于 Team 或更高许可证
        • leptonx-lite:LeptonX-Lite 主题。
        • basic:基础主题。
      • --use-open-source-template-uost:使用开源模板。(适用于 Team 或更高许可证
    • microservice:微服务解决方案模板(适用于 Business 或更高许可证)。附加选项:
      • --ui-framework-u:指定 UI 框架。默认框架是 mvc。可用框架:
        • mvc:ASP.NET Core MVC。此模板有一些附加选项:
        • angular:Angular UI。此模板有一些附加选项:
        • blazor:Blazor UI。此模板有一些附加选项:
        • blazor-server:Blazor Server UI。此模板有一些附加选项:
        • maui-blazor:Blazor Maui UI。此模板有一些附加选项:
        • no-ui:无 UI。不会创建前端层。此模板有一些附加选项:
      • --mobile-m:指定移动应用程序框架。默认值是 none。可用框架:
        • none:无移动应用程序。
        • react-native:React Native。
        • maui:MAUI。
      • --database-provider-d:指定数据库提供程序。默认提供程序是 ef。可用提供程序:
        • ef:Entity Framework Core。
        • mongodb:MongoDB。
      • --theme:指定主题。默认主题是 leptonx。可用主题:
        • leptonx:LeptonX 主题。
        • basic:基础主题。
      • --public-website:公共网站是一个面向公众的网站,用于描述你的项目、列出你的产品并进行搜索引擎优化以达到营销目的。用户可以通过此网站在你的网站上登录和注册。此选项仅包含在 PRO 模板中。
      • --no-grafana-dashboard-ngd:不向解决方案添加示例 Grafana 仪表板。
  • --output-folder-o:指定输出文件夹。默认值是当前目录。
  • --local-framework-ref-lfr:使用对 ABP 框架的本地项目引用,而不是使用 NuGet 包。它会尝试从 ide-state.json 中查找路径。该文件位于 %UserProfile%\.abp\studio\ui\ide-state.json(对于 Windows)和 ~/.abp/studio/ui/ide-state.json(对于 MAC)。
  • --create-solution-folder-csf:指定项目是放在输出文件夹内的新文件夹中,还是直接放在输出文件夹中。
  • --database-management-system-dbms:设置数据库管理系统。默认是 SQL Server。支持的 DBMS:
    • SqlServer
    • MySQL
    • PostgreSQL
    • SQLiteapp & app-nolayers
    • Oracleapp & app-nolayers
    • Oracle-Devartapp & app-nolayers
  • --dont-run-install-libs:跳过安装客户端包。
  • --dont-run-bundling:跳过为 Blazor 包进行捆绑。
  • --no-kubernetes-configuration-nkc:跳过 Kubernetes 配置文件。
  • --no-social-logins-nsl:跳过社交登录配置。
  • --no-tests-ntp:不添加测试项目。
  • 模块选项:如果你不希望将某些模块添加到解决方案中,可以跳过它们,或者如果你想要它们,可以包含它们(适用于 Team 或更高许可证)。可用命令:
    • -no-saas:跳过 Saas 模块。
    • -no-gdpr:跳过 GDPR 模块。
    • -no-openiddict-admin-ui:跳过 OpenIddict Admin UI 模块。
    • -no-audit-logging:跳过审计日志模块。
    • -no-language-management:跳过语言管理模块。
    • -no-text-template-management:跳过文本模板管理模块。
    • -file-management:包含文件管理模块。
    • -chat:包含聊天模块。
  • --legacy:生成一个旧版解决方案。
    • trust-version:信任用户的版本,不检查该版本是否存在。如果在缓存中找到具有给定版本的模板,则使用它,否则抛出异常。

new-module

生成一个新模块。

abp new-module <模块名称> [选项]

示例:

abp new-module Acme.BookStore -t module:ddd

选项

  • --template-t:指定模板名称。默认模板名称是 module:ddd,它生成一个 DDD 模块。模块模板由主模板提供,请参阅它们自己的启动模板文档以获取可用模块。empty:emptymodule:ddd 模板适用于所有解决方案结构。
  • --output-folder-o:指定输出文件夹。默认值是当前目录。
  • --target-solution-ts:如果设置,新模块将被添加到给定的解决方案中。否则,新模块将被添加到文件系统中最近的解决方案中。如果找不到解决方案,将抛出错误。
  • --solution-folder-sf:指定在 解决方案资源管理器 虚拟文件夹系统中的目标文件夹。
  • --database-provider-d:指定数据库提供程序。默认提供程序是 ef。此选项仅在模块模板支持时可用。如果模块模板支持,你可以添加多个用逗号分隔的值,例如 ef,mongodb。可用提供程序:
    • ef:Entity Framework Core。
    • mongodb:MongoDB。
  • --ui-framework-u:指定 UI 框架。此选项仅在模块模板支持时可用。如果模块模板支持,你可以添加多个用逗号分隔的值,例如 mvc,angular。可用框架:
    • mvc:ASP.NET Core MVC。
    • angular:Angular UI。
    • blazor:Blazor UI。
    • blazor-server:Blazor Server UI。

new-package

生成一个新的包。

abp new-package [选项]

示例:

abp new-package --name Acme.BookStore.Domain --template lib.domain

选项

  • --template-t:指定模板名称。此参数没有默认值,必须设置。可用模板及其子选项:
    • lib.class-library
    • lib.domain-shared
      • --add-localization:包含默认的本地化配置和语言文件。
    • lib.domain
      • --add-settings:包含默认的设置配置。
      • --add-db-properties:包含默认的数据库属性类。
      • --add-domain-shared:包含一个额外的域共享包。
    • lib.application-contracts
    • lib.application
      • --add-mapperly:添加 Mapperly 配置。
      • --add-application-contracts:包含一个额外的合约包。
    • lib.ef
      • --include-migrations:允许在此包上进行迁移操作。
      • --connection-string-name:默认值是包命名空间的最后一部分(或简称为包名称)。
      • --connection-string:连接字符串值。默认值为空。你可以稍后设置它。注意: 指定连接字符串时,请确保用双引号括起来,例如:--connection-string "Server=localhost;Database=MyProjectName;Trusted_Connection=True"
    • lib.mongodb
    • lib.http-api
    • lib.http-api-client
    • lib.mvc
      • --add-mapperly:添加 Mapperly 配置。
    • lib.blazor
      • --add-mapperly:添加 Mapperly 配置。
      • --add-menu-contributors:包含默认的菜单贡献者。
    • lib.blazor-wasm
    • lib.blazor-server
    • host.http-api
      • --add-serilog:包含 Serilog 配置。
      • --add-swagger:包含 Swagger 配置。
    • host.mvc
      • --add-serilog:包含 Serilog 配置。
      • --add-swagger:包含 Swagger 配置。
    • host.blazor-wasm
      • --backend:模块中后端项目的名称(不是路径)。
    • host.blazor-server
    • abp.console
    • csharp.console
    • csharp.library
  • --module-file-m:如果设置,新包将被添加到给定模块中。否则,新包将被添加到文件系统中最近的模块中。如果找不到模块,将抛出错误。
  • --name-n:指定包的名称。如果未设置,将根据模板类型和模块名称生成一个名称。
  • --folder-f:指定目标模块虚拟文件夹系统中的目标文件夹。

update

更新所有与 ABP 相关的包可能很繁琐,因为框架和模块有很多包。此命令会自动将解决方案或项目中所有与 ABP 相关的 NuGet 和 NPM 包更新到最新版本。你可以在解决方案的根文件夹中运行它。

用法:

abp update [选项]
  • 如果在包含 .csproj 文件的目录中运行,它会将项目的所有与 ABP 相关的包更新到最新版本。
  • 如果在包含 .sln 文件的目录中运行,它会将解决方案的所有项目的所有与 ABP 相关的包更新到最新版本。
  • 如果在包含子文件夹中多个解决方案的目录中运行,它可以更新所有解决方案,包括 Angular 项目。

请注意,此命令可以将你的解决方案从先前版本升级,也可以将解决方案从预览版升级到同一版本的稳定版。

选项

  • --npm:仅更新 NPM 包。
  • --nuget:仅更新 NuGet 包。
  • --solution-path-sp:指定解决方案路径。默认使用当前目录。
  • --solution-name-sn:指定解决方案名称。默认在目录中搜索 *.sln 文件。
  • --check-all:分别检查每个包的新版本。默认为 false
  • --version-v:指定用于更新的版本。如果未指定,则使用最新版本。
  • --leptonx-version-lv:指定用于更新的 LeptonX 版本。如果未指定,则使用最新版本或与 --version 参数兼容的版本。

clean

删除当前文件夹中所有的 BINOBJ 文件夹。

用法:

abp clean

add-package

将 ABP 包添加到项目中,通过:

  • 将相关的 nuget 包作为依赖项添加到项目。
  • [DependsOn(...)] 属性添加到项目中的模块类(请参阅 模块开发文档)。

请注意,添加的模块可能需要额外的配置,这通常在相关包的文档中说明。

基本用法:

abp add-package <包名称> [选项]

示例:

abp add-package Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic
  • 此示例将 Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic 包添加到项目中。

选项

  • --project-p:指定项目(.csproj)文件路径。如果未指定,CLI 会尝试在当前目录中查找 .csproj 文件。
  • --with-source-code:将包的源代码下载到你的解决方案文件夹,并使用本地项目引用而不是 NuGet/NPM 包。
  • --add-to-solution-file:将下载的包添加到你的解决方案文件中,因此当你打开 IDE 中的解决方案时,也会看到该包。(仅当 --with-source-code 为 True 时可用)

目前只有基础主题包的源代码可以下载( MVCBlazor )。

  • Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic
  • Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme
  • Volo.Abp.AspNetCore.Components.Web.BasicTheme
  • Volo.Abp.AspNetCore.Components.Server.BasicTheme

add-package-ref

将一个或多个包引用添加到目标项目,同时添加 ABP 模块依赖项。引用项目和目标项目必须属于同一模块。

abp add-package-ref <包名称列表> [选项]

示例:

abp add-package-ref Acme.BookStore.Domain
abp add-package-ref "Acme.BookStore.Domain Acme.BookStore.Domain.Shared" -t Acme.BookStore.Web

选项

  • --target-project-t:将添加引用的项目名称。如果未设置,将使用当前目录中的项目。

install-module

将作为 nuget 包发布的模块安装到本地模块中。根据项目的类型创建项目关系。例如:一个 lib.domain-shared 项目被添加到 lib.domain-shared 项目。

abp install-module <模块名称> [选项]

示例:

abp install-module Volo.Blogging

abp install-module Volo.Blogging -t "modules/crm/Acme.Crm.abpmdl"

选项

  • --target-module-t:目标模块的路径(或文件夹路径),其他模块将被安装到该模块中。如果未设置,将使用当前目录中最近的模块。
  • --version-v:要安装的模块的 NuGet 版本。

install-local-module

将一个模块安装到另一个模块中。根据项目的类型创建项目关系。例如:一个 lib.domain-shared 项目被添加到 lib.domain-shared 项目。

abp install-local-module <模块路径> [选项]

示例:

abp install-local-module Acme.OrderManagement

abp install-local-module Acme.OrderManagement -t "modules/crm/Acme.Crm.abpmdl"

选项

  • --target-module-t:目标模块的路径(或文件夹路径),其他模块将被安装到该模块中。如果未设置,将使用当前目录中最近的模块。

list-modules

列出开源应用程序模块的名称。

用法:

abp list-modules [选项]

示例:

abp list-modules

list-templates

列出所有可用于创建解决方案的模板。

用法:

abp list-templates

get-source

将模块的源代码下载到你的计算机。

用法:

abp get-source <模块名称> [选项]

示例:

abp get-source Volo.Blogging

abp get-source Volo.Blogging --local-framework-ref --abp-path D:\GitHub\abp

选项

  • --output-folder-o:指定源代码将下载到的目录。如果未指定,则使用当前目录。
  • --version-v:指定要下载的源代码的版本。如果未指定,则使用最新版本。
  • --preview:如果未指定版本选项,此选项指定是否使用最新的 预览版本 而不是最新的稳定版本。
  • --local-framework-ref --abp-path:你计算机中 ABP GitHub 仓库 的路径。这将用于将项目引用转换到你的本地系统。如果未指定,项目引用将被转换为 NuGet 引用。

add-source-code

下载模块的源代码,并将包引用替换为项目引用。仅当你的 ABP 商业许可证具有源代码访问权限,或者目标模块的源代码对所有类型的 ABP 商业许可证免费时,此命令才有效。

abp add-source-code <模块名称> [选项]

示例:

abp add-source-code Volo.Chat --add-to-solution-file

选项

  • --target-module-t:将引用下载的源代码的模块。如果未设置,将使用当前目录中的模块。
  • --add-to-solution-file:将下载的源代码添加到 C# 解决方案文件和 ABP Studio 解决方案文件中。

init-solution

创建解决方案所需文件,使其可被 ABP Studio 读取。如果解决方案是通过 ABP Studio 生成的,你不需要此命令。但如果它不是由 ABP Studio 生成的,你需要此命令使其与 ABP Studio 兼容。

abp init-solution [选项]

示例:

abp init-solution --name Acme.BookStore

选项

  • --name-n:解决方案的名称。如果未设置,它将与文件系统中最近的 C# 解决方案名称相同。

kube-connect

连接到 Kubernetes 集群(适用于 Business 或更高许可证)。按 ctrl+c 断开连接。

abp kube-connect [选项]

示例:

abp kube-connect

abp kube-connect -p Default.abpk8s.json

abp kube-connect -c docker-desktop -ns mycrm-local

选项

  • --profile-p:要使用的 Kubernetes 配置文件路径或名称。路径可以是相对路径(相对于当前目录)或完整路径,或者,如果你在与解决方案或配置文件相同的目录中运行此命令,你可以直接给出配置文件的名称。如果使用 --namespace--context 参数,则不需要此参数。
  • --namespace-ns:服务运行所在的命名空间。
  • --context-c:服务运行所在的上下文。
  • --wireguard-password-wp:配置文件的 Wireguard 密码。如果你已在 ABP Studio 用户界面上设置过,则不需要此选项。
  • --solution-path-sp:解决方案的路径。如果未设置,将使用文件系统中最近的解决方案。

kube-intercept

拦截在 Kubernetes 环境中运行的服务(适用于 Business 或更高许可证)。按 ctrl+c 停止拦截。

abp kube-intercept <服务名称> [选项]

示例:

abp kube-intercept mycrm-product-service -ns mycrm-local

abp kube-intercept mycrm-product-service -ns mycrm-local -a MyCrm.ProductService.HttpApi.Host.csproj

abp kube-intercept mycrm-product-service -ns mycrm-local -a MyCrm.ProductService.HttpApi.Host.csproj -pm 8080:80,8081:443

选项

  • --application-a:将拦截服务的项目的相对或完整路径。如果未设置,将使用当前目录中的项目。
  • --namespace-ns:服务运行所在的命名空间。
  • --context-sc:服务运行所在的上下文。默认值为 docker-desktop
  • --port-mappings-pm:服务的端口映射。

list-module-sources

使用此命令,你可以查看可用于安装模块的远程模块源列表。它类似于 Visual Studio 中的 NuGet 源列表。

abp list-module-sources

add-module-source

将远程模块源添加到可用于安装模块的源列表中。

abp add-module-source [选项]

你可以创建自己的模块源并将其添加到列表中。它接受名称和 URL 或路径作为参数。如果你提供路径,它应该是包含模块 json 文件的本地路径。如果你提供 URL,它应该是包含模块 json 文件的 URL。json 文件应具有以下格式:

{
	"name": "ABP 开源模块",
	"modules" : {
		"Volo.Abp.Account": {},
		"Volo.Abp.AuditLogging": {},
		"Volo.Abp.Identity": {},
    ...
	}
}

当你添加一个模块源后,就可以使用 install-module 命令从该源安装模块。它会尝试从 NuGet 查找包,例如 Volo.Abp.Account.Installer。你可以配置一个私有的 NuGet 源,并将你的模块发布到该源。每个模块都有一个安装程序包,用于将模块安装到解决方案中。当你将模块发布到私有源时,也应将安装程序包发布到同一源。

示例:

abp add-module-source -n "自定义源" -p "D:\packages\abp\modules.json"

abp add-module-source -n "自定义 HTTP 源" -p "https://raw.githubusercontent.com/x/abp-module-store/main/abp-module-store.json"

选项

  • --name-n:模块源的名称。
  • --path-p:模块源的路径。它可以是本地路径或 URL。

delete-module-source

从可用于安装模块的源列表中删除一个远程模块源。

abp delete-module-source [选项]

示例:

abp delete-module-source -n "自定义源"

选项

  • --name-n:模块源的名称。

generate-proxy

为你的 HTTP API 生成 Angular、C# 或 JavaScript 服务代理,以便从客户端轻松使用你的服务。运行此命令前,你的宿主(服务器)应用程序必须处于运行状态。

用法:

abp generate-proxy -t <客户端类型> [选项]

示例:

abp generate-proxy -t ng -url https://localhost:44302/
abp generate-proxy -t js -url https://localhost:44302/
abp generate-proxy -t csharp -url https://localhost:44302/

选项

  • --type-t:客户端类型的名称。可用客户端:
    • csharp:C#,在 *.HttpApi.Client 项目目录中工作。此客户端有一些附加选项:
      • --without-contracts:避免生成应用服务接口、类、枚举和 DTO 类型。
      • --folder:放置生成的 C# 代码的文件夹名称。默认值:ClientProxies
    • ng:Angular。此客户端有一些附加选项:
      • --api-name-a:在 /src/environments/environment.ts 中定义的 API 端点名称。默认值:default
      • --source-s:指定用于解析根命名空间和 API 定义 URL 的 Angular 项目名称。默认值:defaultProject
      • --target:指定放置生成的代码的 Angular 项目名称。默认值:defaultProject
      • --module:后端模块名称。默认值:app
      • --entry-point:指定放置生成代码的目标 Angular 项目。
      • --url:指定 API 定义 URL。默认值是环境文件中 API 名称的 URL。
      • --prompt-p:从命令行提示符询问选项(针对未指定的选项)。
    • js:JavaScript,在 *.Web 项目目录中工作。此客户端有一些附加选项:
      • --output-o:放置生成的代码的 JavaScript 文件路径或文件夹。
  • --module-m:指定要为其生成代理的后端模块的名称。默认值:app
  • --working-directory-wd:执行目录。适用于 csharpjs 客户端类型。
  • --url-u:API 定义来源的 URL。
  • --service-type-st:指定要生成的服务类型。applicationintegrationall,C# 默认为 all,JavaScript / Angular 默认为 application

更多信息请参阅 Angular 服务代理文档

remove-proxy

从 Angular、CSharp 或 JavaScript 应用程序中移除先前生成的代理代码。运行此命令前,你的宿主(服务器)应用程序必须处于运行状态。

当你之前为多个模块生成了代理,后来需要移除其中一个时,这尤其有用。

用法:

abp remove-proxy -t <客户端类型> [选项]

示例:

abp remove-proxy -t ng
abp remove-proxy -t js -m identity -o Pages/Identity/client-proxies.js
abp remove-proxy -t csharp --folder MyProxies/InnerFolder

选项

  • --type-t:客户端类型的名称。可用客户端:
    • csharp:C#,在 *.HttpApi.Client 项目目录中工作。此客户端有一些附加选项:
      • --folder:放置生成的 C# 代码的文件夹名称。默认值:ClientProxies
    • ng:Angular。此客户端有一些附加选项:
      • --api-name-a:在 /src/environments/environment.ts 中定义的 API 端点名称。默认值:default
      • --source-s:指定用于解析根命名空间和 API 定义 URL 的 Angular 项目名称。默认值:defaultProject
      • --target:指定放置生成的代码的 Angular 项目名称。默认值:defaultProject
      • --url:指定 API 定义 URL。默认值是环境文件中 API 名称的 URL。
      • --prompt-p:从命令行提示符询问选项(针对未指定的选项)。
    • js:JavaScript,在 *.Web 项目目录中工作。此客户端有一些附加选项:
      • --output-o:放置生成的代码的 JavaScript 文件路径或文件夹。
  • --module-m:指定要为其生成代理的后端模块的名称。默认值:app
  • --working-directory-wd:执行目录。适用于 csharpjs 客户端类型。
  • --url-u:API 定义来源的 URL。

更多信息请参阅 Angular 服务代理文档

switch-to-preview

你可以使用此命令将你的解决方案或项目切换到 ABP 的最新预览版本。

用法:

abp switch-to-preview [选项]

选项

  • --directory-d:指定目录。解决方案或项目应位于该目录或其任何子目录中。如果未指定,默认为当前目录。

switch-to-nightly

你可以使用此命令将你的解决方案或项目切换到 ABP 包的最新 夜间构建 预览版本。

用法:

abp switch-to-nightly [选项]

选项

  • --directory-d:指定目录。解决方案或项目应位于该目录或其任何子目录中。如果未指定,默认为当前目录。

switch-to-stable

如果你正在使用 ABP 预览包(包括夜间预览版),可以使用此命令切换回最新的稳定版本。

用法:

abp switch-to-stable [选项]

选项

  • --directory-d:指定目录。解决方案或项目应位于该目录或其任何子目录中。如果未指定,默认为当前目录。

switch-to-local

将指定文件夹(及其所有深度的子文件夹)中所有 .csproj 文件的 NuGet 包引用更改为本地项目引用。它不仅限于 ABP 或模块包。

用法:

abp switch-to-local [选项]

选项

  • --solution-s:指定解决方案目录。解决方案应位于该目录或其任何子目录中。如果未指定,默认为当前目录。
  • --paths-p:指定项目所在的本地路径。你可以使用 | 字符分隔路径。

示例:

abp switch-to-local --paths "D:\Github\abp|D:\Github\my-repo"

upgrade

将 ABP 模块升级为专业模块,例如将 Identity 升级为 Identity Pro。你可以将此用于 单层 Web 应用程序分层 Web 应用程序 模板。 此命令专为在获得许可证之前已开始开发的用户设计。因此,此命令需要许可证。

用法:

abp upgrade [-t <模板名称>] [选项]

示例:

abp upgrade -t app
abp upgrade -t app --language-management --gdpr --audit-logging-ui --text-template-management --openiddict-pro
abp upgrade -t app-nolayers --audit-logging-ui
abp upgrade -t app-nolayers -p D:\MyProjects\MyProject

选项

  • --path-p:指定模块路径。模块应位于该目录中。如果未指定,默认为当前目录。
  • --gdpr:同时安装 GDPR 模块。
  • --language-management:同时安装语言管理模块。
  • --audit-logging-ui:同时安装审计日志 Pro(UI)模块。
  • --text-template-management:同时安装文本模板管理模块。
  • --openiddict-pro:同时安装 OpenIddict Pro(UI)模块。

translate

当你源代码控制仓库中有多个 JSON 本地化 文件时,简化 本地化 文件的翻译过程。

  • 此命令将基于参考文化创建一个统一的 json 文件。
  • 它搜索当前目录和所有子目录(递归地)中的所有本地化 JSON 文件。然后创建一个包含所有需要翻译的条目的单个文件(默认命名为 abp-translation.json)。
  • 一旦你翻译了此文件中的条目,就可以使用 --apply 命令将更改应用到原始本地化文件。

此命令的主要目的是翻译 ABP 本地化文件(因为 abp 仓库 有数十个位于不同目录中需要翻译的本地化文件)。

创建翻译文件

第一步是创建统一的翻译文件:

abp translate -c <文化> [选项]

示例:

abp translate -c de

此命令为 de(德语)文化创建了统一的翻译文件。

附加选项
  • --reference-culture-r:默认 en。指定参考文化。
  • --output-o:输出文件名。默认 abp-translation.json
  • --all-values-all:包含所有要翻译的键。默认情况下,统一翻译文件仅包含目标文化缺失的文本。如果你可能需要修订先前已翻译的值,请指定此参数。

应用更改

一旦你翻译了统一翻译文件中的条目,就可以使用 --apply 参数将更改应用到原始本地化文件:

abp translate --apply  # 应用所有更改
abp translate -a       # --apply 的快捷方式

然后在你的源代码控制系统上检查更改,确保它已更改了正确的文件,如果你翻译了 ABP 资源,请发送 Pull Request。提前感谢你的贡献。

附加选项
  • --file-f:默认:abp-translation.json。翻译文件(仅在你之前使用了 --output 选项时使用)。

在线 DeepL 翻译

translate 命令也支持在线翻译。你需要提供你的 DeepL 认证密钥

它将搜索目录和子目录中的所有 en.json(参考文化) 文件,然后翻译并生成相应的 zh-Hans.json(文化) 文件。

abp translate -c zh-Hans --online --deepl-auth-key <认证密钥>

login

CLI 的某些功能需要登录到 ABP 平台。login 命令支持以下用法选项:

abp login                                             # 打开默认浏览器通过 abp.io 登录到 ABP 平台
abp login --device                                    # 使用设备登录流程
abp login username -p ****** --password               # 使用用户名密码登录

新登录会覆盖已有的活动会话。

login-info

显示你的登录信息,例如 姓名姓氏用户名邮箱地址组织

abp login-info

logout

通过从你的计算机移除会话令牌来注销。

abp logout

bundle

此命令为 ABP Blazor WebAssembly 和 MAUI Blazor 项目生成脚本和样式引用,并更新 index.html 文件。它帮助开发者轻松管理 ABP 模块所需的依赖项。为了使 bundle 命令工作,其执行目录或传入的 --working-directory 参数指定的目录必须包含一个 Blazor 或 MAUI Blazor 项目文件(*.csproj)。

用法:

abp bundle [选项]

如果你正在使用全局资源功能,则不再需要此命令。更多信息请参阅 管理全局脚本和样式

选项

  • --working-directory-wd:指定工作目录。当执行目录不包含 Blazor 项目文件时,此选项很有用。
  • --force-f:强制在生成引用前构建项目。
  • --project-type-t:指定项目类型。默认类型是 webassembly。可用类型:
    • webassembly
    • maui-blazor
  • --version-v:指定项目正在使用的 ABP Framework 版本。这对于使用集中式包管理的人很有帮助。

bundle 命令读取 Blazor 和 MAUI Blazor 项目内部的 appsettings.json 文件以获取捆绑选项。有关在 Blazor 或 MAUI Blazor 应用中管理样式和脚本引用的更多详细信息,请参阅 管理全局脚本和样式

install-libs

此命令为 MVC / Razor Pages 和 Blazor Server UI 类型安装 NPM 包。其执行目录或传入的 --working-directory 参数指定的目录必须包含一个项目文件(*.csproj)。

install-libs 命令读取 abp.resourcemapping.js 文件来管理包。更多详细信息请参阅 客户端包管理

用法:

abp install-libs [选项]

选项

  • --working-directory-wd:指定工作目录。当执行目录不包含项目文件时,此选项很有用。

check-extensions

此命令检查已安装的 ABP CLI 扩展,并在必要时更新它们。

用法:

abp check-extensions

install-old-cli

此命令安装旧版本的 ABP CLI,如果指定了版本,则安装特定版本。否则,它安装最新稳定版本的旧 ABP CLI。然后,你可以通过简单地在命令末尾传递 --old 参数或使用 abp-old 作为执行命令来直接使用旧的 ABP CLI

用法:

abp install-old-cli [选项]

generate-razor-page

generate-razor-page 命令生成一个页面类,然后你可以在 ASP.NET Core 管道中使用它来返回 HTML 页面。

用法:

  1. Views 文件夹中创建一个继承自 AbpCompilationRazorPageBase 的新 Razor Page(MyPage.cshtml)
  2. 在同一文件夹中创建一个 MyPageModel 类。
  3. 在同一文件夹中创建 MyPage.jsMyPage.css 文件。
  4. 将以下代码添加到 MyPage.cshtmlMyPage.cssMyPage.js 文件中。
public class MyPageModel
{
    public string Message { get; set; }

    public MyPageModel(string message)
    {
        Message = message;
    }
}
@using System.Globalization
@using Volo.Abp.AspNetCore.RazorViews
@inherits AbpCompilationRazorPageBase
@{
    Response.ContentType = "text/html; charset=utf-8";
    Response.StatusCode = 200;
}

@functions{
    public MyPage(MyPageModel model)
    {
        Model = model;
    }

    public MyPageModel Model { get; set; }
}

<html lang="@HtmlEncoder.Encode(CultureInfo.CurrentCulture.Name)">
    <head>
        <meta charset="utf-8" />
        <style>
            <%$ include: MyPage.css %>
        </style>
        <title>@HtmlEncoder.Encode(Model.Message)</title>
    </head>
    <body>
        <h3>@HtmlEncoder.Encode(Model.Message)</h3>

        <ul class="list-group">
            @for(int i = 0; i < 10; i++)
            {
                <li class="list-group-item">@i item</li>
            }
        </ul>

        <script>
            //<!--
            <%$ include: MyPage.js %>
            //-->
        </script>
    </body>
</html>
body {
    background-color: #65b2ff;
    color: #495057;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
console.log('MyPage.js loaded!');
  1. 最后,在 Views 文件夹下运行 generate-razor-page 命令:
> abp generate-razor-page

正在为 /MyProject/Views 中的页面生成代码文件
  正在为页面 MyPage.cshtml 生成代码文件 ...
    内联文件 MyPage.css
    内联文件 MyPage.js
    完成!
成功生成 1 个文件。

输出将类似于上述命令输出,并且 MyPage.Designer.cs 文件将在同一文件夹中创建。它是一个标准的 C# 类,你可以在管道中使用它来返回 HTML 页面:

app.Use(async (httpContext, next) =>
{
    if (true) // 你的条件
    {
        var page = new MyPage(new MyPageModel("测试消息"));
        await page.ExecuteAsync(httpContext);
    }
    else
    {
        await next();
    }
});

Razor 页面

选项

  • --version-v:指定要安装的 ABP CLI 版本。

另请参阅

在本文档中