# ABP CLI ABP CLI (命令行接口) 是一个命令行工具,用来执行基于ABP解决方案的一些常见操作. ## Installation ABP CLI 是一个 [dotnet global tool](https://docs.microsoft.com/en-us/dotnet/core/tools/global-tools). 使用命令行窗口安装: ````bash dotnet tool install -g Volo.Abp.Cli ```` 更新最新版本: ````bash dotnet tool update -g Volo.Abp.Cli ```` ## 全局选项 虽然每个命令可能都有一组选项,但有些全局选项可以与任何命令一起使用: * `--skip-cli-version-check`: 跳过检查最新版本的ABP CLI. 如果没有指定,它会检查最新版本,如果检查到ABP CLI的新版本,会显示一条警告消息. ## Commands 这里是所有可用的命令列表: * **`help`**: 展示ABP CLI的用法帮助信息. * **`new`**:生成基于ABP的[启动模板](Startup-Templates/Index.md). * **`update`**:自动更新的ABP解决方案ABP相关的NuGet和NPM包. * **`add-package`**: 添加ABP包到项目. * **`add-module`**: 添加[应用模块](https://docs.abp.io/en/abp/latest/Modules/Index)到解决方案. * **`generate-proxy`**: 生成客户端代理以使用HTTP API端点. * **`remove-proxy`**: 移除以前生成的客户端代理. * **`switch-to-preview`**: 切换到ABP框架的最新预览版本。 * **`switch-to-nightly`**: 切换解决方案所有ABP相关包为[夜间构建](Nightly-Builds.md)版本. * **`switch-to-stable`**: 切换解决方案所有ABP相关包为最新的稳定版本. * **`translate`**: 当源代码控制存储库中有多个JSON[本地化](Localization.md文件时,可简化翻译本地化文件的过程. * **`login`**: 使用你在[abp.io](https://abp.io/)的用户名和密码在你的计算机上认证. * **`logout`**: 在你的计算机注销认证. ### help 展示ABP CLI的基本用法: 用法: ````bash abp help [command-name] ```` 示例: ````bash abp help # Shows a general help. abp help new # Shows help about the "new" command. ```` ### new 生成基于ABP[启动模板](Startup-Templates/Index.md)的新解决方案. 用法: ````bash abp new <解决方案名称> [options] ```` 示例: ````bash abp new Acme.BookStore ```` * Acme.BookStore是解决方案的名称. * 常见的命名方式类似于 *YourCompany.YourProject*. 不过你可以使用自己喜欢的方式,如 *YourProject* (单级命名空间) 或 *YourCompany.YourProduct.YourModule* (三级命名空间). #### Options * `--template` 或者 `-t`: 指定模板. 默认的模板是 `app`,会生成web项目.可用的模板有: * `app` (default): [应用程序模板](Startup-Templates/Application.md). 其他选项: * `--ui` 或者 `-u`: 指定ui框架.默认`mvc`框架.其他选项: * `mvc`: ASP.NET Core MVC.此模板的其他选项: * `--tiered`: 创建分层解决方案,Web和Http Api层在物理上是分开的.如果未指定会创建一个分层的解决方案,此解决方案没有那么复杂,适合大多数场景. * `angular`: Angular. 这个模板还有一些额外的选项: * `--separate-identity-server`: 将Identity Server应用程序与API host应用程序分开. 如果未指定,则服务器端将只有一个端点. * `blazor`: Blazor. 这个模板还有一些额外的选项: * `--separate-identity-server`: 将Identity Server应用程序与API host应用程序分开. 如果未指定,则服务器端将只有一个端点. * `none`: 无UI. 这个模板还有一些额外的选项: * `--separate-identity-server`: 将Identity Server应用程序与API host应用程序分开. 如果未指定,则服务器端将只有一个端点. * `--mobile` 或者 `-m`: 指定移动应用程序框架. 如果未指定,则不会创建任何移动应用程序,其他选项: * `none`: 不包含移动应用程序. * `react-native`: React Native. * `--database-provider` 或者 `-d`: 指定数据库提供程序.默认是 `ef`.其他选项: * `ef`: Entity Framework Core. * `mongodb`: MongoDB. * `module`: [Module template](Startup-Templates/Module.md). 其他选项: * `--no-ui`: 不包含UI.仅创建服务模块(也称为微服务 - 没有UI). * **`console`**: [Console template](Startup-Templates/Console.md). * `--output-folder` 或者 `-o`: 指定输出文件夹,默认是当前目录. * `--version` 或者 `-v`: 指定ABP和模板的版本.它可以是 [release tag](https://github.com/abpframework/abp/releases) 或者 [branch name](https://github.com/abpframework/abp/branches). 如果没有指定,则使用最新版本.大多数情况下,你会希望使用最新的版本. * `--preview`: 使用最新的预览版本. * `--template-source` 或者 `-ts`: 指定自定义模板源用于生成项目,可以使用本地源和网络源(例如 `D:\local-templat` 或 `https://.../my-template-file.zip`). * `--create-solution-folder` 或者 `-csf`: 指定项目是在输出文件夹中的新文件夹中还是直接在输出文件夹中. * `--connection-string` 或者 `-cs`: 重写所有 `appsettings.json` 文件的默认连接字符串. 默认连接字符串是 `Server=localhost;Database=MyProjectName;Trusted_Connection=True`. 默认的数据库提供程序是 `SQL Server`. 如果你使用EF Core但需要更改DBMS,可以按[这里所述](Entity-Framework-Core-Other-DBMS.md)进行更改(创建解决方案之后). * `--local-framework-ref --abp-path`: 使用对项目的本地引用,而不是替换为NuGet包引用. ### update 更新所有ABP相关的包可能会很繁琐,框架和模块都有很多包. 此命令自动将解决方案或项目中所有ABP相关的包更新到最新版本. 用法: ````bash abp update [options] ```` * 如果你的文件夹中有.sln文件,运行命令会将解决方案中所有项目ABP相关的包更新到最新版本. * 如果你的文件夹中有.csproj文件,运行命令会将项目中所有ABP相关的包更新到最新版本. #### Options * `--npm`: 仅更新NPM包 * `--nuget`: 仅更新的NuGet包 * `--solution-path` 或 `-sp`: 指定解决方案路径/目录. 默认使用当前目录 * `--solution-name` 或 `-sn`: 指定解决方案名称. 默认在目录中搜索`*.sln`文件. * `--check-all`: 分别检查每个包的新版本. 默认是 `false`. * `--version` or `-v`: 指定用于升级的版本. 如果没有指定,则使用最新版本. ### add-package 通过以下方式将ABP包添加到项目中 * 添加nuget包做为项目的依赖项目. * 添加 `[DependsOn(...)]` attribute到项目的模块类 (请参阅 [模块开发文档](Module-Development-Basics.md)). > 需要注意的是添加的模块可能需要额外的配置,通常会在包的文档中指出. 用法: ````bash abp add-package <包名> [options] ```` 示例: ```` abp add-package Volo.Abp.MongoDB ```` * 示例中将Volo.Abp.MongoDB包添加到项目中. #### Options * `--project` 或 `-p`: 指定项目 (.csproj) 路径. 如果未指定,Cli会尝试在当前目录查找.csproj文件. ### add-module 通过查找模块的所有包,查找解决方案中的相关项目,并将每个包添加到解决方案中的相应项目,从而将[多包应用程序模块](Modules/Index)添加到解决方案中. > 由于分层,不同的数据库提供程序选项或其他原因,业务模块通常由多个包组成. 使用`add-module`命令可以大大简化向模块添加模块的过程. 但是每个模块可能需要一些其他配置,这些配置通常在相关模块的文档中指出. 用法: ````bash abp add-module <模块名称> [options] ```` 示例: ```bash abp add-module Volo.Blogging ``` * 示例中将Volo.Blogging模块添加到解决方案中. #### Options * `--solution` 或 `-s`: 指定解决方案 (.sln) 路径. 如果未指定,CLI会尝试在当前目录中寻找.sln文件. * `--skip-db-migrations`: 对于EF Core 数据库提供程序,它会自动添加新代码的第一次迁移 (`Add-Migration`) 并且在需要时更新数据库 (`Update-Database`). 指定此选项可跳过此操作. * `-sp` 或 `--startup-project`: 启动项目的项目文件夹的相对路径. 默认值是当前文件夹. * `--with-source-code`: 添加模块的源代码,而不是NuGet/NPM软件包. ### generate-proxy 为您的HTTP API生成Angular服务代理,简化从客户端使用服务的成本. 在运行此命令之前,你的host必须启动正在运行. 用法: ````bash abp generate-proxy ```` #### Options * `--module` 或 `-m`: 指定要为其生成代理的后端模块的名称. 默认值: `app`. * `--api-name` 或 `-a`: 在 `/src/environments/environment.ts` 中定义的API端点名称。. 默认值: `default`. * `--source` 或 `-s`: 指定解析根名称空间和API定义URL的Angular项目名称. 默认值: `defaultProject` * `--target` 或 `-t`: 指定放置生成的代码的Angular项目名称. 默认值: `defaultProject`. * `--prompt` 或 `-p`: 在命令行提示符下询问选项(未指定的选项). > 参阅 [Angular服务代理文档](UI/Angular/Service-Proxies.md) 了解更多. ### remove-proxy 从Angular应用程序中删除以前生成的代理代码. 在运行此命令之前,你的host必须启动正在运行. This can be especially useful when you generate proxies for multiple modules before and need to remove one of them later. Usage: ````bash abp remove-proxy ```` #### Options * `--module` 或 `-m`: 指定要为其生成代理的后端模块的名称. 默认值: `app`. * `--api-name` 或 `-a`: 在 `/src/environments/environment.ts` 中定义的API端点名称。. 默认值: `default`. * `--source` 或 `-s`: 指定解析根名称空间和API定义URL的Angular项目名称. 默认值: `defaultProject` * `--target` 或 `-t`: 指定放置生成的代码的Angular项目名称. 默认值: `defaultProject`. * `--prompt` 或 `-p`: 在命令行提示符下询问选项(未指定的选项). > 参阅 [Angular服务代理文档](UI/Angular/Service-Proxies.md) 了解更多. ### switch-to-preview 你可以使用此命令将项目切换到ABP框架的最新预览版本. 用法: ````bash abp switch-to-preview [options] ```` #### Options * `--solution-directory` 或 `-sd`: 指定目录. 解决方案应该在该目录或其子目录中. 如果未指定默认为当前目录. ### switch-to-nightly 想要切换到ABP框架的最新[每晚构建](Nightly-Builds.md)预览版可以使用此命令. 用法: ````bash abp switch-to-nightly [options] ```` #### Options `--solution-directory` 或 `-sd`: 指定目录. 解决方案应该在该目录或其子目录中. 如果未指定默认为当前目录. ### switch-to-stable 如果你使用的是ABP框架预览包(包括每晚构建),可以使用此命令切换回最新的稳定版本. 用法: ````bash abp switch-to-stable [options] ```` #### Options `--solution-directory` 或 `-sd`: 指定目录. 解决方案应该在该目录或其子目录中. 如果未指定默认为当前目录. ### translate 源代码控制存储库中有多个JSON[本地化](Localization.md)文件时,用于简化翻译[本地化](Localization.md)文件的过程. * 该命令将基于参考文化创建一个统一的json文件 * 它搜索当前目录和所有子目录中的所有本地化"JSON"文件(递归). 然后创建一个包含所有需要翻译的条目的文件(默认情况下名为 "abp-translation.json"). * 翻译了此文件中的条目后,你就可以使用 `--apply` 命令将更改应用于原始本地化文件. > 该命令的主要目的是翻译ABP框架本地化文件(因为[abp仓库](https://github.com/abpframework/abp)包括数十个要在不同目录中转换的本地化文件). #### 创建翻译文件 第一步是创建统一的翻译文件: ````bash abp translate -c [options] ```` 示例: ````bash abp translate -c de-DE ```` 该命令为 `de-DE` (德语)文化创建了统一的翻译文件. ##### 附加选项 * `--reference-culture` 或 `-r`: 默认值 `en`. 指定参考文化. * `--output` 或 `-o`: 输出文件名. 默认值 `abp-translation.json`. * `--all-values` 或 `-all`: 包括所有要翻译的键. 默认情况下,统一翻译文件仅包含目标文化的缺失文本. 如果你可能需要修改之前已经翻译的值,请指定此参数. #### 应用更改 翻译完统一翻译文件中的条目后,你可以使用 `--apply` 参数将更改应用于原始本地化文件: ````bash abp translate --apply # apply all changes abp translate -a # shortcut for --apply ```` 然后,检查源代码控制系统上的更改,以确保它已更改了正确的文件. 如果你翻译了ABP框架资源, 请发送 "Pull Request". 提前感谢你的贡献. ##### 附加选项 * `--file` 或 `-f`: 默认值: `abp-translation.json`. 翻译文件(仅在之前使用过 `--output` 选项时使用). ### login CLI的一些功能需要登录到abp.io平台. 使用你的用户名登录 ```bash abp login # Allows you to enter your password hidden abp login -p # Specify the password as a parameter (password is visible) abp login --organization # If you have multiple organizations, you need set your active organization abp login -p -o # You can enter both your password and organization in the same command ``` > 当使用-p参数,请注意,因为你的密码是可见的. 它对于CI / CD自动化管道很有用. 请注意,新的登录将终止先前的会话并创建一个新的会话. ### logout 通过从计算机中删除会话令牌来注销. ``` abp logout ```