{"id":13834040,"url":"https://github.com/enisn/AbpDevTools","last_synced_at":"2025-07-10T01:32:59.498Z","repository":{"id":185634945,"uuid":"629903533","full_name":"enisn/AbpDevTools","owner":"enisn","description":"A set of tools to make development with ABP easier.","archived":false,"fork":false,"pushed_at":"2024-11-19T09:03:08.000Z","size":2629,"stargazers_count":37,"open_issues_count":3,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-19T10:18:57.572Z","etag":null,"topics":["abp","abp-framework","cli","dotnet"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enisn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-19T09:01:14.000Z","updated_at":"2024-11-19T09:03:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"a4891d1e-e55d-4a44-8997-a6c69ea29084","html_url":"https://github.com/enisn/AbpDevTools","commit_stats":null,"previous_names":["enisn/abpdevtools"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enisn%2FAbpDevTools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enisn%2FAbpDevTools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enisn%2FAbpDevTools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enisn%2FAbpDevTools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enisn","download_url":"https://codeload.github.com/enisn/AbpDevTools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225610577,"owners_count":17496297,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abp","abp-framework","cli","dotnet"],"created_at":"2024-08-04T13:00:47.931Z","updated_at":"2025-07-10T01:32:59.492Z","avatar_url":"https://github.com/enisn.png","language":"C#","funding_links":[],"categories":["Tools"],"sub_categories":["Commercial Modules","Community"],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"art/logo.svg\" height=\"256\" /\u003e\n\u003c/p\u003e\n\n# AbpDevTools\nA set of tools to make development with ABP easier. It's a dotnet tool and accessed via `abpdev` **CLI** command.\n\nIt helps the developer, build, run, replace, and manage logs of the projects. It makes running **multiple** solutions and projects easier.\n\n\u003e Done with [Enisn.Templates.CLI](https://github.com/enisn/Enisn.Templates.CLI). You can build similar CLI tools with this template.\n\n\u003ca href=\"https://www.nuget.org/packages/AbpDevTools\"\u003e\u003cimg src=\"https://img.shields.io/nuget/v/AbpDevTools?logo=nuget\" alt=\"AbpDevTools on Nuget\" /\u003e\u003c/a\u003e\n\n# Installation\n\n- Install [AbpDevTools from NuGet](https://www.nuget.org/packages/AbpDevTools) as dotnet tool:\n```bash\ndotnet tool update -g AbpDevTools\n```\n\n- Installation for a specific runtime other than the latest:\n    \n    ```bash\n    dotnet tool update -g AbpDevTools --framework net8.0\n    # or\n    dotnet tool update -g AbpDevTools --framework net6.0\n    ```\n\n\u003e This package is compiled for .NET 6.0, 7.0, 8.0 and 9.0. So you can install it for a specific runtime. If you don't specify a runtime, it'll install the latest version.\n\n## Local Installation\nIf you don't have access to the package source. You can install it from the source code by the following code:\n\n```bash\npwsh install.ps1\n```\n\n# Getting Started\n  You can watch the **'Getting Started'** video for onboarding this tool:\n  \n  \u003ca href=\"https://youtu.be/wG7MfdIq_Fo\"\u003e \u003cimg src=\"https://github.com/enisn/AbpDevTools/assets/23705418/b31a37a0-96c7-418c-8287-80922c178b3c\"/\u003e \u003c/a\u003e\n\n\n# Usage\n\nExecute `abpdev` command in the terminal and it'll show you the help message.\n\n```bash\nabpdev --help\n```\n\n# Commands\nThe following commands are available:\n\n## abpdev build\nBuilds all solutions/projects in the current directory recursively. _(Multiple solutions)_\n\n```\nabpdev build \u003cworkingdirectory\u003e [options]\n```\n\n```bash\nabpdev build -h\n\nPARAMETERS\n  workingdirectory  Working directory to run build. Probably project or solution directory path goes here. Default: . (Current Directory) \nOPTIONS\n  -f|--build-files  (Array) Names or part of names of projects or solutions will be built.\n  -i|--interactive  Interactive build file selection. Default: \"False\".\n  -c|--configuration\n  -h|--help         Shows help text.\n```\n\nConvention: `*.sln` files are considered as solutions and `*.csproj` files are considered as projects.\n\n![abpdev build](images/abpdevbuild.gif)\n\n### Example commands\n\n- Run in a specific path\n    ```bash\n    abpdev build C:\\Path\\To\\Projects\n    ```\n\n- Run in a specific configuration\n    ```bash\n    abpdev build C:\\Path\\To\\Projects -c Release\n    ```\n\n\n- Run in a specific path with specific configuration and specific projects\n    ```bash\n    abpdev build C:\\Path\\To\\Projects -c Release -f ProjectA.csproj ProjectB.csproj\n    ```\n\n- Run in interactive mode **(Select projects to build)**\n    ```bash\n    abpdev build -i\n    ```\n    ![abpdev build interactive](images/abpdevbuild-interactive.gif)\n\n## abpdev run\nRuns the solution in the current directory. _(Multiple solution, multiple applications including DbMigrator)_\n\n```\nabpdev run \u003cworkingdirectory\u003e [options]\n```\n\n```bash\nPARAMETERS\n  workingdirectory  Working directory to run build. Probably project or solution directory path goes here. Default: . (Current Directory)\n\nOPTIONS\n  -w|--watch        Watch mode Default: \"False\".\n  --skip-migrate    Skips migration and runs projects directly. Default: \"False\".\n  -a|--all          Projects to run will not be asked as prompt. All of them will run. Default: \"False\".\n  --no-build        Skipts build before running. Passes '--no-build' parameter to dotnet run. Default: \"False\".\n  -i|--install-libs  Runs 'abp install-libs' command while running the project simultaneously. Default: \"False\".\n  -g|--graphBuild   Uses /graphBuild while running the applications. So no need building before running. But it may cause some performance. Default: \"False\".\n  -p|--projects     (Array) Names or part of names of projects will be ran.\n  -c|--configuration\n  -e| --env        Virtual Environment name. You can manage virtual environments by using 'abpdev env config'\n  -h|--help         Shows help text.\n```\n\nConvention: `*.csproj` files with specific names are considered as applications or dbmigrators.\n\n\u003e _Use `abpdev run config` command to change project name conventions according to your requirements_\n\n![abpdev run](images/abpdevrun.gif)\n\n### Example commands\n\n- Run multiple solutions\n    ```bash\n    abpdev run C:\\Path\\To\\Top\\Folder\\Of\\Solutions\n    ```\n    ![abpdev run multiple solutions](images/abpdevrun-multiplesolutions.gif)\n\n- Run in a specific path\n    ```bash\n    abpdev run C:\\Path\\To\\Projects\n    ```\n\n- Run in a specific configuration and specific path\n    ```bash\n    abpdev run C:\\Path\\To\\Projects -c Release\n    ```\n\n- Run all projects instead prompt selection\n    ```bash\n    abpdev run -a\n    ```\n\n    ![abpdev run all](images/abpdevrun-all.gif)\n\n- Skip migration and run projects directly\n    ```bash\n    abpdev run --skip-migrate\n    ```\n\n- Run in watch mode\n    ```bash\n    abpdev run -w\n    ```\n    \u003e Please note that we cannot print URL's because dotnet does give any output.\n\n## Virtual Environments\nVirtual environments are used to run multiple solutions with different configurations. For example, you can run different solutions with different environments _(connectionstrings etc.)_.\n\n You can manage virtual environments by using `abpdev env config` command and use those pre-configured environments with other commands like: `abpdev run -e SqlServer`. This command will use the environment named SqlServer. You can set different connectionstrings for each environment.\n\n```bash\nabpdev env config\n```\n\n\u003e You'll see the following screen. You can add, edit, delete, and select virtual environments.\n\u003e ```json\n\u003e {\n\u003e  \"SqlServer\": {\n\u003e    \"Variables\": {\n\u003e      \"ConnectionStrings__Default\": \"Server=localhost;Database={AppName}_{Today};User ID=SA;Password=12345678Aa;TrustServerCertificate=True\"\n\u003e    }\n\u003e  },\n\u003e  \"MongoDB\": {\n\u003e    \"Variables\": {\n\u003e      \"ConnectionStrings__Default\": \"mongodb://localhost:27017/{AppName}_{Today}\"\n\u003e    }\n\u003e  }\n\u003e}\n\u003e ```\n\u003e **{Today}** will be replaced with the current date. So you can run multiple solutions with different databases.\n\u003e **{AppName}** will be replaced with the application name. So you can run multiple solutions with different databases. _When app name couldn't be detected, folder name will be used.\n\n\n### Example commands\n\n- Run in a specific virtual environment\n    ```bash\n    abpdev run -e SqlServer\n    ```\n\n\n\n\n## abpdev prepare\nPrepares the project for the first running on this machine. Automatically detects project dependencies, starts required environment apps (databases, message brokers), installs ABP libraries, and creates local configuration files. You can use the `abpdev.yml` configuration file to run the project with different environments without changing the `appsettings.json` files. You can modify the created `abpdev.yml` file to change or add new environment variables to run profile.\n\n```\nabpdev prepare \u003cworkingdirectory\u003e [options]\n```\n\n```bash\nabpdev prepare -h\n\nPARAMETERS\n  workingdirectory  Working directory to run build. Probably project or solution directory path goes here. Default: . (Current Directory)\n\nOPTIONS\n  --no-config       Do not create local configuration file. (abpdev.yml) Default: \"False\".\n  -h|--help         Shows help text.\n```\n\nConvention: The command analyzes project dependencies to determine which environment apps are needed (SQL Server, MongoDB, Redis, etc.) and automatically configures the environment accordingly.\n\n![abpdev prepare](images/abpdevprepare.gif)\n\n### Example commands\n\n- Prepare project in current directory\n    ```bash\n    abpdev prepare\n    ```\n\n- Prepare project in a specific path\n    ```bash\n    abpdev prepare C:\\Path\\To\\Projects\n    ```\n\n- Prepare without creating local configuration files\n    ```bash\n    abpdev prepare --no-config\n    ```\n\nThis command performs the following operations:\n- **Dependency Analysis**: Scans projects for database and messaging dependencies\n- **Environment Apps**: Starts required Docker containers (SQL Server, MongoDB, Redis, etc.)\n- **Library Installation**: Runs `abp install-libs` to install client-side libraries\n- **Blazor Bundling**: Bundles Blazor WASM projects\n- **Configuration**: Creates `abpdev.yml` files with appropriate environment settings\n\n## abpdev logs\nFinds given project under the current directory and shows logs of it.\n\n![abpdev logs](images/abpdevlogs.gif)\n---\n![abpdev logs clear](images/abpdevlogs-clear.gif)\n\n\n```bash\n  abpdev logs \u003cprojectname\u003e [options]\n  abpdev logs [command] [...]\n\nPARAMETERS\n  projectname       Determines the project to open logs of it.\n\nOPTIONS\n  -p|--path         Working directory of the command. Probably solution directory. Default: . (CurrentDirectory)\n  -i|--interactive  Options will be asked as prompt when this option used. Default: \"False\".\n  -h|--help         Shows help text.\n\nCOMMANDS\n  clear\n```\n\n### Example commands\n\n- Show logs of the **.Web** project\n    ```bash\n    abpdev logs Web\n    ```\n\n- Clear logs of the **.Web** project\n    ```bash\n    abpdev logs clear -p Web\n    ```\n\n- Clear logs without approval\n    ```bash\n    abpdev logs clear -p Web -f\n    ```\n\n## abpdev replace\nReplaces specified text in files under the current directory recursively. Mostly used to replace connection strings in `appsettings.json` files. But it can be used for any other purposes. \n\n```bash\nUSAGE\n  abpdev replace \u003creplacementconfigname\u003e [options]\n  abpdev replace [command] [...]\n\nDESCRIPTION\n  Runs file replacement according to configuration.\n\nPARAMETERS\n  replacementconfigname  If you execute single option from config, you can pass the name or pass 'all' to execute all of them\n\nOPTIONS\n  -p|--path         Working directory of the command. Probably solution directory. Default: . (CurrentDirectory)\n  -i|--interactive  Interactive Mode. It'll ask prompt to pick one config. Default: \"False\".\n  -h|--help         Shows help text.\n\nCOMMANDS\n  config            Allows managing replacement configuration. Subcommands: config clear.\n```\n\n![abpdev replace](images/abpdevreplace.gif)\n\n\n\u003e Use `abpdev replace config` command to change file name conventions according to your requirements.\n\u003e _You'll see something like that by default:\n\u003e ```json \n\u003e {\n\u003e   \"ConnectionStrings\": {\n\u003e     \"FilePattern\": \"appsettings.json\",\n\u003e     \"Find\": \"Trusted_Connection=True;\",\n\u003e     \"Replace\": \"User ID=SA;Password=12345678Aa;\"\n\u003e   }\n\u003e }\n\u003e ```\n\n### Example commands\n\n- Replace connection strings in `appsettings.json` files\n    ```bash\n    abpdev replace ConnectionStrings\n    ```\n\n- Run all the configurations at once\n    ```bash\n    abpdev replace all\n    ```\n\n## Local Source Management\nYou can configure and manage local source mappings to easily switch between package references and local project references during development. This is especially useful when working with local forks or development versions of external packages.\n\n### Configure Local Sources\n```bash\nabpdev local-sources config\n```\n\nThis command opens a YAML configuration file where you can define your local source mappings:\n\n```yaml\nabp:\n  RemotePath: https://github.com/abpframework/abp.git\n  Path: C:\\github\\abp\n  Packages:\n    - Volo.Abp.*\n    - Volo.Abp.Core\nother-lib:\n  Path: C:\\source\\other-lib\n  Packages:\n    - MyOrg.OtherLib.*\n```\n\n**Configuration Properties:**\n- **RemotePath**: The remote repository URL _(optional)_, for cloning if not exists)\n- **Path**: Local path where the source code is located. It'll be used to find the project files. Descendants of this path will be scanned for project files.\n- **Packages**: List of package patterns to match (supports wildcards with `*`)\n\n\u003e **Important**: The order of sources in the configuration file matters. When switching references, the first matching source will be used for a package. It only matters if the same package exists in different sources. Otherwise, don't worry about it.\n\n## Reference Management\nManage project and package references efficiently with local source switching capabilities.\n\n### Switch to Local References\nConverts package references to local project references for development:\n\n```bash\nabpdev references to-local [workingdirectory] [options]\n```\n\n```bash\nabpdev references to-local -h\n\nPARAMETERS\n  workingdirectory  Working directory to run build. Probably project or solution directory path goes here. Default: . (Current Directory)\n\nOPTIONS\n  -s|--sources      (Array) Sources to switch to local. Default: all sources.\n  -h|--help         Shows help text.\n```\n\nThis command:\n- Finds all `.csproj` files in the working directory\n- Matches package references against configured local source patterns\n- Converts matching packages to project references with relative paths\n- Backs up original package versions in PropertyGroup for later restoration\n\n### Switch to Package References\nConverts local project references back to package references:\n\n```bash\nabpdev references to-package [workingdirectory] [options]\n```\n\n```bash\nabpdev references to-package -h\n\nPARAMETERS\n  workingdirectory  Working directory to run build. Probably project or solution directory path goes here. Default: . (Current Directory)\n\nOPTIONS\n  -s|--sources      (Array) Sources to switch to package. Default: all sources.\n  -h|--help         Shows help text.\n```\n\nThis command:\n- Finds all `.csproj` files in the working directory\n- Identifies project references pointing to configured local sources\n- Converts them back to package references using backed-up versions\n- Prompts for version input if no backed-up version exists\n\n### Example commands\n\n- Configure local sources\n    ```bash\n    abpdev local-sources config\n    ```\n\n- Switch all package references to local development versions\n    ```bash\n    abpdev references to-local\n    ```\n\n- Switch specific sources to local\n    ```bash\n    abpdev references to-local --sources abp\n    ```\n\n- Switch back to package references\n    ```bash\n    abpdev references to-package\n    ```\n\n- Switch specific sources back to packages\n    ```bash\n    abpdev references to-package --sources abp,other-lib\n    ```\n\n- Work in specific directory\n    ```bash\n    abpdev references to-local C:\\Path\\To\\Projects --sources abp\n    ```\n\n## Enable Notifications\nYou can enable notifications to get notified when a build or run process is completed. You can enable it by using `abpdev enable-notifications` command and disable it by using `abpdev disable-notifications` command.\n\n\u003e _It only works on **Windows** and **MacOS**. Linux is not supported yet._\n\n```bash\nabpdev enable-notifications\nabpdev disable-notifications\n```\n\nIt'll send a notification when a **migration**, **build** or **run** process is completed.\n\n![abpdev notifications](images/abpdevnotification.gif)\n\n\n## Environment Apps\nYou can easily run commonly used environment apps like **SQL Server**, **PostgreSQL**, **Redis**, **MySQL**, **MongoDB** and **RabbitMQ** by using `abpdev envapp start` command.\n\n```bash\nabpdev envapp [command] \u003cappname\u003e [options]\n\nabpdev envapp start \u003cappname\u003e [options]\nabpdev envapp stop \u003cappname\u003e [options]\n```\n\n\u003e You can change the default running commands by using `abpdev envapp config` command.\n\n![abpdev envapp](images/abpdevenvapp.gif)\n\nAvailable app names by **default**:\n```bash\n - sqlserver\n - sqlserver-edge\n - postgresql\n - mysql\n - mongodb\n - redis\n - rabbitmq\n```\n\n_You can extend the list or change environments of apps by using `abpdev envapp config` command._\n\n### Example commands\n\n- Start SQL Server with custom SA password\n    ```bash\n    abpdev envapp start sqlserver -p myPassw0rd\n    ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenisn%2FAbpDevTools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenisn%2FAbpDevTools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenisn%2FAbpDevTools/lists"}