Create a new ABP.IO project using CLI commands with proper template selection, configuration, and setup. Supports all ABP templates including layered, single-layer, microservice, and modular architectures.
Create a new ABP.IO project using the ABP CLI with proper template selection, configuration, and initial setup.
Your goal is to create a new ABP.IO project using the CLI with the appropriate template, configuration, and setup based on the specified requirements.
# Install ABP CLI globally
dotnet tool install -g Volo.Abp.Cli
# Verify installation
abp --version
# Update to latest version
abp update
# Install specific version
dotnet tool install -g Volo.Abp.Cli --version 8.0.0
# Install from local source
dotnet tool install -g Volo.Abp.Cli --add-source ./local-packages
Standard layered application for most scenarios.
Use Cases:
Command:
abp new <solution-name> -t app [options]
Simplified template for small applications.
Use Cases:
Command:
abp new <solution-name> -t app-nolayers [options]
For distributed microservice architectures.
Use Cases:
Command:
abp new <solution-name> -t microservice [options]
Minimal template for custom solutions.
Use Cases:
Command:
abp new <solution-name> -t empty [options]
mvc: ASP.NET Core MVC (default)angular: Angular SPAblazor-webapp: Blazor Web Appblazor: Blazor Serverblazor-server: Blazor Serverno-ui: No UI layeref: Entity Framework Core (default)mongodb: MongoDBnone: No mobile app (default)react-native: React Nativemaui: .NET MAUI--tiered: Creates tiered architecture (separate API and UI layers)--separate-tenant-schema: Different DbContext for tenant schemaleptonx: LeptonX Theme (premium)leptonx-lite: LeptonX-Lite Theme (default)basic: Basic Theme--connection-string: Custom database connection string--skip-migrations: Skip initial database migration--skip-migrator: Skip database migrator--public-website: Add public website (PRO)--without-cms-kit: Exclude CmsKit module--sample-crud-page: Add sample CRUD page--use-open-source-template: Use open-source template# Basic MVC application
abp new Acme.BookStore
# With specific options
abp new Acme.BookStore -t app -u mvc -d ef -th leptonx-lite
# With custom connection string
abp new Acme.BookStore -t app -u mvc -d ef --connection-string "Server=localhost;Database=BookStore;Trusted_Connection=true"
# Angular application
abp new Acme.BookStore -t app -u angular -d ef
# Angular with tiered architecture
abp new Acme.BookStore -t app -u angular -d ef --tiered
# Angular with PWA
abp new Acme.BookStore -t app -u angular -d ef --progressive-web-app
# Blazor Web App
abp new Acme.BookStore -t app -u blazor-webapp -d ef
# Blazor Server
abp new Acme.BookStore -t app -u blazor-server -d ef
# Blazor with tiered architecture
abp new Acme.BookStore -t app -u blazor-webapp -d ef --tiered
# Basic microservice
abp new Acme.Microservice -t microservice -u mvc -d ef
# Microservice with Angular
abp new Acme.Microservice -t microservice -u angular -d ef
# Microservice with multiple services
abp new Acme.Microservice -t microservice -u mvc -d ef --tiered
# Single-layer API
abp new Acme.Api -t app-nolayers -u no-ui -d ef
# API with sample CRUD
abp new Acme.Api -t app-nolayers -u no-ui -d ef --sample-crud-page
# Ensure ABP CLI is installed
abp --version
# Update to latest version
abp update
# Verify available templates
abp list-templates
# Create project with selected template
abp new <solution-name> [options]
# Example: Create layered MVC application
abp new Acme.BookStore -t app -u mvc -d ef -th leptonx-lite
# Navigate to project directory
cd <solution-name>
# Restore packages
dotnet restore
# Create and apply database migrations
dotnet ef database update
# Run the application
dotnet run --project src/<solution-name>.Web
# Verify solution builds
dotnet build
# Run tests
dotnet test
# Check application startup
# Navigate to https://localhost:44300
Acme.BookStore.sln
├── src/
│ ├── Acme.BookStore.Application/
│ │ ├── BookStoreApplicationModule.cs
│ │ ├── Books/
│ │ │ ├── BookAppService.cs
│ │ │ └── IBookAppService.cs
│ │ └── Acme.BookStore.Application.csproj
│ ├── Acme.BookStore.Application.Contracts/
│ │ ├── Books/
│ │ │ ├── BookDto.cs
│ │ │ └── IBookAppService.cs
│ │ └── Acme.BookStore.Application.Contracts.csproj
│ ├── Acme.BookStore.Domain/
│ │ ├── BookStoreDomainModule.cs
│ │ ├── Books/
│ │ │ ├── Book.cs
│ │ │ └── IBookRepository.cs
│ │ └── Acme.BookStore.Domain.csproj
│ ├── Acme.BookStore.Domain.Shared/
│ │ ├── BookStoreDomainSharedModule.cs
│ │ └── Acme.BookStore.Domain.Shared.csproj
│ ├── Acme.BookStore.EntityFrameworkCore/
│ │ ├── BookStoreEntityFrameworkCoreModule.cs
│ │ ├── BookStoreDbContext.cs
│ │ ├── Configurations/
│ │ │ └── BookConfiguration.cs
│ │ └── Acme.BookStore.EntityFrameworkCore.csproj
│ ├── Acme.BookStore.HttpApi/
│ │ ├── BookStoreHttpApiModule.cs
│ │ ├── Controllers/
│ │ │ └── BooksController.cs
│ │ └── Acme.BookStore.HttpApi.csproj
│ ├── Acme.BookStore.HttpApi.Client/
│ │ └── Acme.BookStore.HttpApi.Client.csproj
│ ├── Acme.BookStore.Web/
│ │ ├── BookStoreWebModule.cs
│ │ ├── Pages/
│ │ ├── wwwroot/
│ │ └── Acme.BookStore.Web.csproj
│ └── Acme.BookStore.Web.Unified/
├── test/
│ ├── Acme.BookStore.Application.Tests/
│ ├── Acme.BookStore.Domain.Tests/
│ ├── Acme.BookStore.EntityFrameworkCore.Tests/
│ ├── Acme.BookStore.Web.Tests/
│ └── Acme.BookStore.HttpApi.Host.Tests/
└── etc/
└── docker-compose.yml
Acme.SimpleApp.sln
├── src/
│ ├── Acme.SimpleApp.Application/
│ │ ├── SimpleAppApplicationModule.cs
│ │ ├── Books/
│ │ │ ├── BookAppService.cs
│ │ │ └── Book.cs
│ │ └── Acme.SimpleApp.Application.csproj
│ ├── Acme.SimpleApp.Application.Contracts/
│ │ └── Acme.SimpleApp.Application.Contracts.csproj
│ ├── Acme.SimpleApp.Domain.Shared/
│ │ └── Acme.SimpleApp.Domain.Shared.csproj
│ ├── Acme.SimpleApp.EntityFrameworkCore/
│ │ ├── SimpleAppDbContext.cs
│ │ └── Acme.SimpleApp.EntityFrameworkCore.csproj
│ ├── Acme.SimpleApp.HttpApi/
│ │ └── Acme.SimpleApp.HttpApi.csproj
│ └── Acme.SimpleApp.Web/
│ ├── Program.cs
│ ├── Pages/
│ └── Acme.SimpleApp.Web.csproj
└── test/
├── Acme.SimpleApp.Application.Tests/
├── Acme.SimpleApp.EntityFrameworkCore.Tests/
└── Acme.SimpleApp.Web.Tests/
abp new Acme.BookStore -t app -u mvc -d ef
abp new Acme.BookStore -t app -u mvc -d ef
# Then manually update to PostgreSQL in appsettings.json
abp new Acme.BookStore -t app -u mvc -d ef
# Then manually update to SQLite in DbContext
abp new Acme.BookStore -t app -u mvc -d mongodb
abp new Acme.BookStore -t app -u mvc -d ef
# Default includes OpenIddict authentication
abp new Acme.BookStore -t app -u mvc -d ef
# Configure custom authentication in WebModule
abp new Acme.BookStore -t app -u mvc -d ef
# Default multi-tenancy with shared database
abp new Acme.BookStore -t app -u mvc -d ef --separate-tenant-schema
# Different schema for each tenant
# Add additional packages
abp add-package Volo.Abp.Emailing
abp add-package Volo.Abp.Sms
abp add-package Volo.Abp.Caching
# Add module
abp add-module Volo.CmsKit
// appsettings.json
{
"ConnectionStrings": {
"Default": "Server=localhost;Database=AcmeBookStore;Trusted_Connection=true"
},
"App": {
"SelfUrl": "https://localhost:44300",
"CorsOrigins": "https://localhost:44300"
},
"AuthServer": {
"Authority": "https://localhost:44300",
"RequireHttpsMetadata": "false"
},
"StringLocalizations": {
"Languages": [
{
"CultureName": "en",
"DisplayName": "English"
},
{
"CultureName": "pt-BR",
"DisplayName": "Português"
}
]
}
}
# Create initial migration
dotnet ef migrations add InitialCreate
# Update database
dotnet ef database update
# Add new migration
dotnet ef migrations add AddedBookEntity
// src/Acme.BookStore.Domain/Books/Book.cs
public class Book : FullAuditedAggregateRoot<Guid>
{
public string Name { get; set; }
public BookType Type { get; set; }
public DateTime PublishDate { get; set; }
public float Price { get; set; }
protected Book() { }
public Book(
Guid id,
string name,
BookType type,
DateTime publishDate,
float price) : base(id)
{
Name = Check.NotNullOrWhiteSpace(name, nameof(name));
Type = type;
PublishDate = publishDate;
Price = price;
}
}
// src/Acme.BookStore.Application/Books/BookAppService.cs
public class BookAppService : ApplicationService, IBookAppService
{
private readonly IRepository<Book, Guid> _bookRepository;
public BookAppService(IRepository<Book, Guid> bookRepository)
{
_bookRepository = bookRepository;
}
public async Task<PagedResultDto<BookDto>> GetListAsync(GetBooksInput input)
{
var queryable = await _bookRepository.GetQueryableAsync();
var books = await AsyncExecuter.ToListAsync(
queryable
.WhereIf(!input.Filter.IsNullOrWhiteSpace(),
book => book.Name.Contains(input.Filter))
.OrderBy(book => book.Name)
.PageBy(input.SkipCount, input.MaxResultCount)
);
var totalCount = await AsyncExecuter.CountAsync(
queryable.WhereIf(!input.Filter.IsNullOrWhiteSpace(),
book => book.Name.Contains(input.Filter))
);
return new PagedResultDto<BookDto>(
totalCount,
ObjectMapper.Map<List<Book>, List<BookDto>>(books)
);
}
}
# Install ABP Suite (separate tool)
# Generate CRUD pages automatically
# Create entities with visual designer
# Manage application settings
# Open project in ABP Studio
# Visual module management
# Advanced debugging tools
# Performance monitoring
# Build Docker image
docker build -t acme/bookstore .
# Run with Docker Compose
docker-compose up -d
# Database migrations in Docker
docker-compose exec web dotnet ef database update
# Install ABP CLI
dotnet tool install -g Volo.Abp.Cli
# Check PATH
echo $PATH
# Reinstall if corrupted
dotnet tool uninstall -g Volo.Abp.Cli
dotnet tool install -g Volo.Abp.Cli
# Check .NET SDK version
dotnet --version
# Clear NuGet cache
dotnet nuget locals all --clear
# Use specific template version
abp new Acme.BookStore -t app --use-open-source-template
# Check connection string
dotnet ef database update --verbose
# Recreate database
dotnet ef database drop
dotnet ef database update
# Check migrations
dotnet ef migrations list
# Clean and rebuild
dotnet clean
dotnet restore
dotnet build
# Check for package conflicts
dotnet list package --outdated
This skill provides comprehensive guidance for creating ABP.IO projects using the CLI with the right template and configuration for your specific needs.