@ -43,6 +43,45 @@ An ABP Studio module is a sub-solution that contains zero, one or multiple packa
An ABP Studio Package typically matches to a .NET project (`csproj`).
An ABP Studio Package typically matches to a .NET project (`csproj`).
### Metadata
Metadata is a collection of key-value pairs that provide additional information for various ABP Studio features. Metadata follows a hierarchical structure where values defined at lower levels override those at higher levels:
**Hierarchy (from highest to lowest priority):**
1. **Helm Chart Metadata** - Defined in chart properties (Kubernetes context only)
2. **Kubernetes Profile Metadata** / **Run Profile Metadata** - Defined in profile settings (context-dependent)
3. **Solution Metadata** - Defined via *Solution Explorer* → right-click solution → *Manage Metadata*
4. **Global Metadata** - Defined via *Tools* → *Global Metadata*
**Common Metadata Keys:**
| Key | Description | Used By |
|-----|-------------|---------|
| `k8ssuffix` | Appends a suffix to Kubernetes namespace (e.g., for multi-developer scenarios) | Kubernetes integration |
| `projectType` | Project type (`dotnet` or `angular`) | Docker image build |
> Metadata defined in *Global Metadata* is available for all solutions but will not be shared with team members. Metadata defined at *Solution* or *Profile* level will be shared through solution files.
### Secrets
Secrets are key-value pairs designed for storing sensitive information such as passwords, API keys, and connection strings. Unlike metadata, secrets are stored in the local file system and are not included in solution files for security reasons.
**Hierarchy (from highest to lowest priority):**
1. **Kubernetes Profile Secrets** / **Run Profile Secrets** - Defined in profile settings (context-dependent)
2. **Solution Secrets** - Defined via *Solution Explorer* → right-click solution → *Manage Secrets*
3. **Global Secrets** - Defined via *Tools* → *Global Secrets*
**Common Secret Keys:**
| Key | Description | Used By |
|-----|-------------|---------|
| `wireGuardPassword` | Password for WireGuard VPN connection to Kubernetes cluster | Kubernetes integration |
> Secrets are stored locally and are not shared with team members by default. Each developer needs to configure their own secrets.
## ABP Studio vs .NET Terms
## ABP Studio vs .NET Terms
Some ABP Studio terms may seem conflict with .NET and Visual Studio. To make them even more clear, you can use the following table.
Some ABP Studio terms may seem conflict with .NET and Visual Studio. To make them even more clear, you can use the following table.
@ -100,7 +100,7 @@ It is the root of all subcharts. When you add a new main chart to the root, it i
- `Install Chart(s)`: Installs the selected chart to the current profile.
- `Install Chart(s)`: Installs the selected chart to the current profile.
- `Uninstall Chart(s)`: Uninstalls the selected chart from the current profile.
- `Uninstall Chart(s)`: Uninstalls the selected chart from the current profile.
- `Properties`: It opens the *Chart Properties* window. You can see the chart information in the *Chart Info* tab. In the *Metadata* tab, you can add metadata for the selected main chart. It overrides the metadata in the profile. In the *Kubernetes Services* tab, you can relate a Kubernetes service with the main chart; however, since the main chart usually doesn't create kubernetes service, we can leave it empty.
- `Properties`: It opens the *Chart Properties* window. You can see the chart information in the *Chart Info* tab. In the *Metadata* tab, you can add metadata for the selected main chart. It overrides the metadata in the profile. In the *Kubernetes Services* tab, you can relate a Kubernetes service with the main chart; however, since the main chart usually doesn't create kubernetes service, we can leave it empty.
- `Refrest Sub Charts`: Refreshes the subcharts of the selected main chart.
- `Refresh Sub Charts`: Refreshes the subcharts of the selected main chart.
- `Open With`: You can open the selected chart with *Visual Studio Code* or *File Explorer*.
- `Open With`: You can open the selected chart with *Visual Studio Code* or *File Explorer*.
- `Remove`: Removes the selected main chart from the solution.
- `Remove`: Removes the selected main chart from the solution.
@ -137,6 +137,11 @@ While connected, changing the current profile is not possible. Existing applicat


When connected, you can right-click on a Kubernetes service to see the following context menu options:
- `Browse`: Opens the [browser](./monitoring-applications.md#browse) and navigates to the Kubernetes service URL. This option is only visible if the service has a related Helm chart with matching *Kubernetes Services* regex pattern.
- `Enable Interception` / `Disable Interception`: Enables or disables traffic interception for the selected service. See the [Intercept a Service](#intercept-a-service) section for more details.
When you are connecting to a Kubernetes cluster, it automatically installs the WireGuard VPN to the Kubernetes cluster for a safe connection. You can specify the *wireGuardPassword* in the *Kubernetes Profile* -> *Secrets* tab or at a higher level such as *Solution Secrets* or *Global Secrets*. If you don't provide a password, it generates a random password and stores it in the *Kubernetes Profile* -> *Secrets*. However, if you try to connect to a cluster that already installed WireGuard VPN, then you should give the same password; otherwise, it won't connect. To see the random password, you can click the *eye* icon in the *Kubernetes Profile* -> *Secrets* tab.
When you are connecting to a Kubernetes cluster, it automatically installs the WireGuard VPN to the Kubernetes cluster for a safe connection. You can specify the *wireGuardPassword* in the *Kubernetes Profile* -> *Secrets* tab or at a higher level such as *Solution Secrets* or *Global Secrets*. If you don't provide a password, it generates a random password and stores it in the *Kubernetes Profile* -> *Secrets*. However, if you try to connect to a cluster that already installed WireGuard VPN, then you should give the same password; otherwise, it won't connect. To see the random password, you can click the *eye* icon in the *Kubernetes Profile* -> *Secrets* tab.
In the data grid, details for each application are displayed. It's possible to sort rows by columns. When selecting a row, you can right-click to access the context menu, offering various actions. This menu allows for opening related tabs that are filtered by the selected application.
In the data grid, details for each application are displayed. It's possible to sort rows by columns.
- `Name`: The name of the application.
- `Name`: The name of the application.
- `State`: The state of the application. It can take on several values such as *Scheduled*, *Starting*, *Started*, *Stopping* and *Stopped*. In the event of an application crash during its starting, the state is mark as *Scheduled*, we can cancel the starting process at that stage.
- `State`: The state of the application. It can take on several values such as *Scheduled*, *Starting*, *Started*, *Stopping* and *Stopped*. The *Scheduled* state indicates the application is waiting for an automatic restart (e.g., after a crash or when watch mode detects changes). You can cancel the scheduled restart at this stage.
- `Health`: The health state of the application. Clicking on the icon shows the latest health check response. Displays `N/A` if the application is not running or health check is not configured for the application.
- `Health`: The health state of the application. The icon indicates the current health status: *Healthy* (green), *Unhealthy* (red), *Degraded* (yellow), or *Unknown* (gray). Clicking on the icon shows the latest health check response in JSON format. Displays `N/A` if the application is not running or health check is not configured for the application.
- `Instances`: Indicates the count of running instances for the application. This value is particularly helpful when scaling the application within a Kubernetes, providing visibility into the number of currently active instances.
- `Instances`: Indicates the count of running instances for the application. This value is particularly helpful when scaling the application within a Kubernetes cluster, providing visibility into the number of currently active pods.
- `Uptime`: The time elapsed since the application started.
- `Uptime`: The time elapsed since the application started.
- `Requests`: The number of HTTP requests received by the application.
- `Requests`: The number of HTTP requests received by the application.
- `Events (R/S)`: The number of [Distributed Event](../framework/infrastructure/event-bus/distributed) received or sent by the application.
- `Events (R/S)`: The number of [Distributed Events](../framework/infrastructure/event-bus/distributed) received or sent by the application.
- `Exceptions`: The number of exceptions thrown by the application.
- `Exceptions`: The number of exceptions thrown by the application.
- `Actions`: The actions that can be performed on the application. You can start and stop the application.
- `Actions`: The actions that can be performed on the application. You can start and stop the application.
> For the events system, you can exclusively view the [Distributed Events](../framework/infrastructure/event-bus/distributed). Generally, the [Local Events](../framework/infrastructure/event-bus/distributed) is not included.
### Context Menu Actions
When selecting a row, you can right-click to access the context menu with the following actions:
| Action | Description |
|--------|-------------|
| **Start / Stop** | Start or stop the selected application. |
| **Restart** | Restart the application (available when the application is running). |
| **Build** | Build options including *Build*, *Graph Build*, *Restore*, and *Clean* (available for C# applications when stopped). |
| **Browse** | Open the application in the [Browse](#browse) tab (available when a Launch URL is configured). |
| **Health Status** | Submenu with *Browse Health UI* and *Show Latest Health Check Response* options. |
| **Requests** | Open the [HTTP Requests](#http-requests) tab filtered by this application. |
| **Exceptions** | Open the [Exceptions](#exceptions) tab filtered by this application. |
| **Logs** | Open the [Logs](#logs) tab with this application selected. |
| **Copy Url** | Copy the application's URL to the clipboard. |
| **Properties** | Open the application properties dialog. |
> For the events system, you can exclusively view the [Distributed Events](../framework/infrastructure/event-bus/distributed). Generally, the [Local Events](../framework/infrastructure/event-bus/local) are not included.
## Browse
## Browse
ABP Studio includes a browser tool that allows access to websites and running applications. You can open new tabs to browse different websites or view active applications. It's a convenient utility to access websites and applications without leaving ABP Studio. Clicking the *Browse* tab displays the running applications and an *Open new tab* button.
ABP Studio includes a built-in browser that allows access to websites and running applications. You can open new tabs to browse different websites or view active applications. It's a convenient utility to access websites and applications without leaving ABP Studio. Clicking the *Browse* tab displays the running applications and an *Open new tab* button.
You can open the *Browse* tabs as many times as you want. It's possible to open the same application in several tabs simultaneously. To open an application, navigate through *Solution Runner* -> *C# or CLI Application* -> *Browse*. This option is only visible when there is a [Launch URL](./running-applications.md#properties). Additionally, you can access any URL by entering it into the address bar.
You can open the *Browse* tabs as many times as you want. It's possible to open the same application in several tabs simultaneously. To open an application, you can:
- Double-click on an application in the *Solution Runner* tree.
- Right-click on an application and select *Browse* from the context menu.
- Click on a running application in the application list shown in the *Browse* tab.
These options are only available when the application has a [Launch URL](./running-applications.md#properties) configured. Additionally, you can access any URL by entering it into the address bar.
When you click the *Dev Tools* button it opens the [Chrome DevTools](https://developers.google.com/web/tools/chrome-devtools) for the selected tab.
### Browser Toolbar
The browser toolbar provides the following controls:
| Control | Description |
|---------|-------------|
| **Back / Forward** | Navigate through your browsing history within the tab. |
| **Refresh** | Reload the current page. |
| **Address Bar** | Enter any URL to navigate directly. The address bar shows the current URL and allows you to navigate to any website. |
| **Dev Tools** | Opens the [Chrome DevTools](https://developers.google.com/web/tools/chrome-devtools) for the selected tab, allowing you to inspect elements, debug JavaScript, and analyze network requests. |
| **Clear Cookies** | Clears all cookies for the currently selected tab, useful for testing authentication flows or resetting session state. |
| **Open in External Browser** | Opens the current URL in your system's default web browser. |
When browsing certain applications (such as AppHost dashboards), ABP Studio displays a notification bar with default credentials. This helps you quickly log in during development. You can dismiss this notification permanently by clicking the *Don't show again* option.
## HTTP Requests
## HTTP Requests
Within this tab, you can view all *HTTP Requests* received by your C# applications. You have the option to filter requests based on URLs by using the search textbox or by selecting a particular application from the combobox. The *Clear Requests* button removes all received requests. Moreover, you have the ability to sort requests by columns.
Within this tab, you can view all *HTTP Requests* received by your C# applications. You have the option to filter requests based on URLs by using the search textbox or by selecting a particular application from the combobox. The *Clear Requests* button removes all received requests. Moreover, you have the ability to sort requests by columns.
Clicking on a row enables you to view the details of each HTTP request; `URL`, `Method`, `Status Code`, `Timestamp`, `Headers (Request, Response)`, `Request (Payload)` and `Response`.
### Request List Columns
The request list displays the following information:
| Column | Description |
|--------|-------------|
| **Timestamp** | When the request was received (displayed as HH:mm:ss). |
| **Application** | The name of the application that received the request. |
| **Path** | The request URL path and query string. |
| **Method** | The HTTP method (GET, POST, PUT, DELETE, etc.). |
| **Status Code** | The HTTP response status code. |
| **Duration** | The time taken to process the request in milliseconds. |
| **Request Body Size** | The size of the request payload. |
| **Response Body Size** | The size of the response payload. |
### Request Details
Clicking on a row enables you to view the details of each HTTP request:
- **URL**: The full request URL.
- **Method**: The HTTP method used.
- **Status Code**: The response status code.
- **Duration**: Request processing time in milliseconds.
- **Timestamp**: When the request was received.
- **Headers (Request)**: All request headers sent by the client.
- **Headers (Response)**: All response headers returned by the server.
- **Request (Payload)**: The request body with size information.
- **Response**: The response body with size information.
You can format the JSON content by clicking the *Format* button.
### Formatting JSON Content
Both request and response payloads have a *Format* button that formats JSON content for better readability. This is available when the content type is `application/json`.
Furthermore, by clicking the gear icon in the *HTTP Requests* tab, you can access the *Solution Runner HTTP Requests Options* window. Within the *Ignored URLs* tab, you have the ability to exclude particular URLs by applying a regex pattern. Excluded URLs won't be visible in the *HTTP Requests* tab. By default, the metrics URL is already ignored. You can add or remove items as needed.
### Quick URL Filter
When viewing request details, you can right-click and select *Filter Selected URL* to quickly apply the current URL as a filter. This is useful when you want to see all requests to a specific endpoint.
### Configuring Ignored URLs
By clicking the gear icon in the *HTTP Requests* tab, you can access the *Solution Runner HTTP Requests Options* window. Within the *Ignored URLs* tab, you have the ability to exclude particular URLs by applying a regex pattern. Excluded URLs won't be visible in the *HTTP Requests* tab. By default, the metrics URL is already ignored. You can add or remove items as needed.
> After adding a new URL, it will only affect subsequent requests.
> After adding a new URL pattern, it will only affect subsequent requests. Existing requests will remain visible.
## Events
## Events
In this tab, you can view all [Distributed Events](../framework/infrastructure/event-bus/distributed) sent or received by your C# applications. You can filter them by [Event Name](../framework/infrastructure/event-bus/distributed#event-name) using the search textbox or by selecting a specific application. Additionally, you can choose the *Direction* (Received/Send) and *Source* (Direct/Inbox/Outbox) of events. The *Clear Events* button removes all events.
In this tab, you can view all [Distributed Events](../framework/infrastructure/event-bus/distributed) sent or received by your C# applications. You can filter them by [Event Name](../framework/infrastructure/event-bus/distributed#event-name) using the search textbox or by selecting a specific application. Additionally, you can choose the *Direction* (Received/Sent) and *Source* (Direct/Inbox/Outbox) of events. The *Clear Events* button removes all events.
> In the *Direction* section, there are two options: *Received*, indicating events received by the application, and *Sent*, indicating events sent by the application. Within the *Source* section, three options are available, and their significance comes into play when utilizing the [Inbox/Outbox pattern](../framework/infrastructure/event-bus/distributed#outbox-inbox-for-transactional-events). *Inbox* refers to events received by the application, *Outbox* refers to events sent by the application and *Direct* signifies events sent or received by the application without involving Inbox/Outbox pattern.
### Direction and Source Filters
| Filter | Options | Description |
|--------|---------|-------------|
| **Direction** | *Received*, *Sent* | Filter by whether events were received or sent by the application. |
| **Source** | *Direct*, *Inbox*, *Outbox* | Filter by event source. Relevant when using the [Inbox/Outbox pattern](../framework/infrastructure/event-bus/distributed#outbox-inbox-for-transactional-events). |
Clicking on a row enables you to view the details of each event; `Application`, `Event Name`, `Direction`, `Source`, `Timestamp` and `Event Data`.
- **Direct**: Events sent or received without using the Inbox/Outbox pattern.
- **Inbox**: Events received through the transactional inbox.
- **Outbox**: Events sent through the transactional outbox.
### Event Details
Clicking on a row enables you to view the details of each event:
- **Application**: The application that sent or received the event.
- **Event Name**: The full event type name.
- **Direction**: Whether the event was received or sent.
- **Source**: The event source (Direct, Inbox, or Outbox).
- **Timestamp**: When the event was processed.
- **Event Data**: The event payload in JSON format.
The *Event Data* section includes a *Format* button that formats the JSON content for better readability. This makes it easier to inspect complex event payloads.
> ABP Studio automatically decodes Base64-encoded event data. If your event bus uses Base64 encoding for message transport, the data will be displayed in its decoded, readable form.
## Exceptions
## Exceptions
This tab displays all exceptions by your C# applications. You can apply filters using the search textbox based on *Message*, *Source*, *ExceptionType*, and *StackTrace* or by choosing a specific application. Additionally, you have the option to select the [Log Level](../framework/fundamentals/exception-handling.md#log-level) for adding a filter. To clear all exceptions, use the *Clear Exceptions* button.
This tab displays all exceptions thrown by your C# applications. You can apply filters using the search textbox based on *Message*, *Source*, *ExceptionType*, and *StackTrace* or by choosing a specific application. Additionally, you have the option to select the [Log Level](../framework/fundamentals/exception-handling.md#log-level) for filtering. To clear all exceptions, use the *Clear Exceptions* button.
If an exception contains inner exceptions, they are displayed hierarchically in the details panel. This allows you to trace the root cause of wrapped exceptions, which is common in scenarios like database errors wrapped in application-level exceptions.
## Logs
## Logs
The *Logs* tab allows you to view all logs for both CLI and C# applications. To access logs, simply select an application. You can also apply filters using the search textbox by log text or by selecting a specific *Log Level*. When you select a *Log Level* it shows selected log level and higher log levels. For example, if you select *Warning* it shows *Warning*, *Error* and *Critical* logs. To clear selected application logs, use the *Clear Logs* button. If *Auto Scroll* is checked, the display automatically scrolls when new logs are received.
The *Logs* tab allows you to view all logs for both CLI and C# applications. To access logs, simply select an application from the dropdown. You can also apply filters using the search textbox by log text or by selecting a specific *Log Level*.
- **Color Coding**: Log entries are color-coded by level for quick visual identification. Errors and critical logs stand out with distinct colors.
- **Auto Scroll**: When enabled, the display automatically scrolls to show new logs as they arrive. This is useful for real-time monitoring.
- **Clear Logs**: Clears the logs for the currently selected application only. Other applications' logs remain intact.
- **Text Filter**: Search within log messages using the search textbox. The filter is applied in real-time with a slight delay for performance.
## Tools
## Tools
The *Tools* tab provides quick access to web-based management interfaces for infrastructure services like Grafana, RabbitMQ, pgAdmin, and Redis Commander. Each tool opens in a dedicated browser tab within ABP Studio, eliminating the need to switch between external browser windows.
The *Tools* tab provides quick access to web-based management interfaces for infrastructure services like Grafana, RabbitMQ, pgAdmin, and Redis Commander. Each tool opens in a dedicated browser tab within ABP Studio, eliminating the need to switch between external browser windows.
@ -77,7 +77,9 @@ We can use common [dotnet](https://learn.microsoft.com/en-us/dotnet/core/tools)
### Add
### Add
We can add 3 different item type to *Profile* for defining the tree structure. Those options are `C# Application`, `CLI Application` and `Folder`.
We can add 4 different item types to *Profile* for defining the tree structure. Those options are `C# Application`, `CLI Application`, `Docker Container`, and `Folder`.
> Note: The `Docker Container` option is only available when right-clicking the profile root. When right-clicking a folder, only `C# Application`, `CLI Application`, and `Folder` options are available.
@ -181,13 +183,15 @@ You can see the context menu by right-clicking *Folder*. It will start/stop all
## C# Application
## C# Application
The .NET icon indicates that the application is a C# project. After we [add](#c-application) the C# applications to the root of the tree or folder, we can go to any C# application and right-click to view the context menu; `Start`, `Build`, `Browse`, `Requests`, `Exceptions`, `Logs`, `Copy URL`, `Properties`, `Remove`.
The .NET icon indicates that the application is a C# project. After we [add](#c-application) the C# applications to the root of the tree or folder, we can go to any C# application and right-click to view the context menu; `Start`, `Stop`, `Restart`, `Build`, `Browse`, `Health Status`, `Requests`, `Exceptions`, `Logs`, `Copy URL`, `Properties`, `Remove`, and `Open with`.
Starts the selected application. Once it is started, *Stop* and *Restart* options will be available.
- **Start**: Starts the selected application.
- **Stop**: Stops the running application.
- **Restart**: Restarts the running application. This option is only available when the application is started.
> When you start the C# application, you should see a *chain* icon next to the application name, that means the started application connected to ABP Studio. C# applications can connect to ABP Studio even when running from outside the ABP Studio environment, for example debugging with Visual Studio. If the application is run from outside the ABP Studio environment, it will display *(external)* information next to the chain icon.
> When you start the C# application, you should see a *chain* icon next to the application name, that means the started application connected to ABP Studio. C# applications can connect to ABP Studio even when running from outside the ABP Studio environment, for example debugging with Visual Studio. If the application is run from outside the ABP Studio environment, it will display *(external)* information next to the chain icon.
@ -199,14 +203,17 @@ It's the [similar](#build) options like root of the tree options. The only diffe
### Monitoring
### Monitoring
When the C# application is connected to ABP Studio, it starts sending telemetry information to see in one place. We can easily click these options to see the detail; `Browse`, `Requests`, `Exceptions` and `Logs`.
When the C# application is connected to ABP Studio, it starts sending telemetry information to see in one place. We can easily click these options to see the detail; `Browse`, `Health Status`, `Requests`, `Exceptions`, `Events` and `Logs`.
- `Browse`: ABP Studio includes a browser tool for accessing websites and running applications. You can click this option to view the application in the ABP Studio browser. However, this option is only accessible if the application is started.
- `Browse`: ABP Studio includes a browser tool for accessing websites and running applications. You can click this option to view the application in the ABP Studio browser. However, this option is only accessible if the application is started.
- Health Status : If Health Check endpoints are defined, it allows you to browse Health UI and see the latest health check response.
- `Health Status`: A submenu that provides health monitoring options when Health Check endpoints are defined:
- **Browse Health UI**: Opens the Health UI page of the application in the built-in browser.
- **Show Latest Health Check Response**: Displays the latest health check response in JSON format.
- `Requests`: It opens the *HTTP Requests* tab with adding the selected application filter. You can view all *HTTP Requests* received by your applications.
- `Requests`: It opens the *HTTP Requests* tab with adding the selected application filter. You can view all *HTTP Requests* received by your applications.
- `Exceptions`: We can display all exceptions on this tab. It opens the *Exceptions* tab with selected application.
- `Exceptions`: We can display all exceptions on this tab. It opens the *Exceptions* tab with selected application.
- `Events`: Opens the *Events* tab filtered by this application. You can view all [Distributed Events](../framework/infrastructure/event-bus/distributed) sent or received by this application.
- `Logs`: Clicking this option opens the *Logs* tab with adding the selected application filter.
- `Logs`: Clicking this option opens the *Logs* tab with adding the selected application filter.
### Properties
### Properties
@ -215,16 +222,31 @@ We can open the *Application Properties* window to change *Launch url*, *Health
- **Health check endpoint**: Endpoint for controlling the health status of the application periodically. If the application doesn't have a endpoint for health check, you can enter `/` to use the home page of the application as health check endpoint.
- **Launch URL**: The URL used when browsing the application. This is the address where the application is accessible.
- **Kubernetes service**: A regex pattern to match Kubernetes service names. When connected to a Kubernetes cluster, ABP Studio uses this pattern to find the corresponding Kubernetes service and uses its URL instead of the Launch URL. This applies to *Browse*, *Copy URL*, and *Health UI* features. For example, if your Helm chart creates a service named `bookstore-identity-service`, you can use `.*-identity-service` or `bookstore-identity.*` as the pattern. For [microservice](../get-started/microservice.md) templates, this is pre-configured.
- **Health check endpoint**: Endpoint for controlling the health status of the application periodically. If the application doesn't have an endpoint for health check, you can enter `/` to use the home page of the application as health check endpoint.
- **Health UI endpoint**: Endpoint of the Health UI page of the application.
- **Health UI endpoint**: Endpoint of the Health UI page of the application.
- **Skip build before starting**: When enabled, application is started without build and it makes starting faster. This is useful when you are working on a single application out of multiple, so you don't need to build others everytime they start.
- **Skip build before starting**: When enabled, the application is started without building, making startup faster. This is useful when you are working on a single application out of multiple, so you don't need to build others every time they start.
- **Watch changes while running**: When enabled, you should see an *eye* icon next to the application name.
- **Watch changes while running**: When enabled, changes in your code are watched and dotnet hot-reloads the application or restarts it if needed. You should see an *eye* icon next to the application name when this is enabled.
- **Open browser on start**: When enabled, the application is automatically opened in the Browse tab when it starts.
- **Auto refresh browser on restart**: When enabled, browser tabs showing this application are automatically refreshed when the application restarts.
- **Runnable**: Controls whether the application can be started from Solution Runner. When disabled, the application will not be included in batch start operations.
The *Open with* submenu provides options to open the application project in external tools:
- **Visual Studio**: Opens the project in Visual Studio (available if installed).
- **Visual Studio Code**: Opens the project folder in Visual Studio Code (available if installed).
- **JetBrains Rider**: Opens the project in JetBrains Rider (available if installed).
- **Terminal**: Opens a terminal window in the project directory.
- **Explorer / Finder**: Opens the project folder in the system file explorer.
### Miscellaneous
### Miscellaneous
- We can copy the selected application *Browse* URL with *Copy URL*. It copies the *Browse* URL instead *Launch URL* since we could connected to *Kubernetes* service.
- We can copy the selected application *Browse* URL with *Copy URL*. It copies the *Browse* URL instead of *Launch URL* since we could be connected to a*Kubernetes* service.
- You can change the target framework by right-click the selected application and change the *Target Framework* option. This option visible if the project has multiple target framework such as MAUI applications.
- You can change the target framework by right-click the selected application and change the *Target Framework* option. This option visible if the project has multiple target framework such as MAUI applications.
- To remove an application from the tree, open the context menu by right-clicking the application and selecting *Remove*.
- To remove an application from the tree, open the context menu by right-clicking the application and selecting *Remove*.
@ -33,6 +33,9 @@ It is the main solution that you can open with ABP Studio, an ABP solution can c
- `New Folder`: Creates a new folder within the ABP Solution, allowing you to organize your modules.
- `New Folder`: Creates a new folder within the ABP Solution, allowing you to organize your modules.
- `New Module`: Allows you to create a new module.
- `New Module`: Allows you to create a new module.
- `Existing Module`: You can add existing module to your solution.
- `Existing Module`: You can add existing module to your solution.
- `Analyze`: Analyzes all modules and packages in the solution to extract information like aggregate roots, application services, permissions, etc.
- `Analyze`: Analyzes all modules and packages using existing build outputs.
- `Build & Analyze`: Builds the solution first, then analyzes all modules and packages.
- `Rename`: Renames the solution.
- `Rename`: Renames the solution.
- `Manage Secrets`: You can edit your solution secrets.
- `Manage Secrets`: You can edit your solution secrets.
- `Manage Metadata`: You can edit your solution metadata.
- `Manage Metadata`: You can edit your solution metadata.
@ -52,6 +55,9 @@ It is the main solution that you can open with ABP Studio, an ABP solution can c
- `Clean`: Cleans the output of the previous build for modules.
- `Clean`: Cleans the output of the previous build for modules.
- `Restore`: Restores the dependencies for modules.
- `Restore`: Restores the dependencies for modules.
- `Open With`
- `Open With`
- `Visual Studio`: Opens the solution in Visual Studio. This option is only available if you have Visual Studio installed.
- `Visual Studio Code`: Opens the solution in Visual Studio Code. This option is only available if you have Visual Studio Code installed.
- `JetBrains Rider`: Opens the solution in JetBrains Rider. This option is only available if you have JetBrains Rider installed.
- `Terminal`: Opens the terminal in the solution directory.
- `Terminal`: Opens the terminal in the solution directory.
- `Explorer`: Opens the file explorer in the solution directory.
- `Explorer`: Opens the file explorer in the solution directory.
- `Solution Configuration`: You can see the project creation options in this menu. It opens the *Solution Configuration* window.
- `Solution Configuration`: You can see the project creation options in this menu. It opens the *Solution Configuration* window.
@ -73,6 +79,9 @@ You can click the *OK* button to add the folder to the solution. When you right-
- `New Folder`: Creates a new nested folder within the selected folder, allowing you to organize your modules.
- `New Folder`: Creates a new nested folder within the selected folder, allowing you to organize your modules.
- `New Module`: Allows you to create a new module to selected folder.
- `New Module`: Allows you to create a new module to selected folder.
- `Existing Module`: You can add existing module to your selected folder.
- `Existing Module`: You can add existing module to your selected folder.
- `Analyze`: Analyzes all modules and packages in the selected folder.
- `Analyze`: Analyzes all modules and packages using existing build outputs.
- `Build & Analyze`: Builds first, then analyzes all modules and packages in the folder.
- `Rename`: Renames the selected folder.
- `Rename`: Renames the selected folder.
- `Delete`: Deletes the selected folder and all child items from the solution.
- `Delete`: Deletes the selected folder and all child items from the solution.
- `ABP CLI`
- `ABP CLI`
@ -102,6 +111,9 @@ A [module](./concepts.md#module) is a sub-solution that can contains zero, one o
- `New Package`: Creates a new package within the selected module.
- `New Package`: Creates a new package within the selected module.
- `Existing Package`: You can add existing package to your selected module.
- `Existing Package`: You can add existing package to your selected module.
- `Folder`: Creates a new folder within the selected module, allowing you to organize your packages.
- `Folder`: Creates a new folder within the selected module, allowing you to organize your packages.
- `Analyze`: Analyzes all packages in the selected module.
- `Analyze`: Analyzes all packages using existing build outputs.
- `Build & Analyze`: Builds first, then analyzes all packages in the module.
- `Import Module`: This option allows you to import an existing module from *Solution*, *Local*, or *NuGet* into your selected module.
- `Import Module`: This option allows you to import an existing module from *Solution*, *Local*, or *NuGet* into your selected module.
- `Rename`: Renames the selected module.
- `Rename`: Renames the selected module.
- `Remove`: Removes the selected module and all child items from the solution.
- `Remove`: Removes the selected module and all child items from the solution.
@ -126,6 +138,7 @@ A [module](./concepts.md#module) is a sub-solution that can contains zero, one o
- `JetBrains Rider`: Opens the module in JetBrains Rider. This option is only available if you have JetBrains Rider installed.
- `JetBrains Rider`: Opens the module in JetBrains Rider. This option is only available if you have JetBrains Rider installed.
- `Terminal`: Opens the terminal in the module directory.
- `Terminal`: Opens the terminal in the module directory.
- `Explorer`: Opens the file explorer in the module directory.
- `Explorer`: Opens the file explorer in the module directory.
- `Open Readme`: Opens the README file in the module if available. This option is only visible if the module has a README file.
- `Upgrade to Pro`: This will be visible only when you purchased a license but still using the modules came with open-source (free) license. For more details, check out [Migrating from Open Source Templates](../guides/migrating-from-open-source.md) document. This is not shown in the screenshot above.
- `Upgrade to Pro`: This will be visible only when you purchased a license but still using the modules came with open-source (free) license. For more details, check out [Migrating from Open Source Templates](../guides/migrating-from-open-source.md) document. This is not shown in the screenshot above.
### Adding a New Empty Module
### Adding a New Empty Module
@ -238,10 +251,18 @@ A [package](./concepts.md#package) is a project that can be added to a module, a
- `Add Package Reference`: This option allows you to add a package reference to the selected package.
- `Add`: This menu is only visible for Host projects (except Blazor WebAssembly).
- `NPM Package`: Adds an NPM package reference to the selected package.
- `Add Package Reference`: This option allows you to add a package reference to the selected package. This option is only visible for non-Host projects.
- `Analyze`: Analyzes the selected package to extract information like aggregate roots, application services, permissions, etc. This menu is only visible for analyzable package types.
- `Analyze`: Analyzes the package using existing build outputs.
- `Build & Analyze`: Builds first, then analyzes the package.
- `Reload`: Reloads the selected package.
- `Reload`: Reloads the selected package.
- `Remove`: Removes the selected package from the module.
- `Remove`: Removes the selected package from the module.
- `ABP CLI`
- `ABP CLI`
- `Generate Proxy`: Generates client-side proxy code for the selected package.
- `Javascript`: Generates JavaScript proxy code.
- `C#`: Generates C# proxy code.
- `Install Libs`: Install NPM Packages for UI projects in your selected package.
- `Install Libs`: Install NPM Packages for UI projects in your selected package.
- `Upgrade ABP Packages`: Update all the ABP related NuGet and NPM packages in your selected package.
- `Upgrade ABP Packages`: Update all the ABP related NuGet and NPM packages in your selected package.
- `Switch to`: It switches your selected package to the specified version of the ABP.
- `Switch to`: It switches your selected package to the specified version of the ABP.
@ -264,6 +285,7 @@ A [package](./concepts.md#package) is a project that can be added to a module, a
- `JetBrains Rider`: Opens the package in JetBrains Rider. This option is only available if you have JetBrains Rider installed.
- `JetBrains Rider`: Opens the package in JetBrains Rider. This option is only available if you have JetBrains Rider installed.
- `Terminal`: Opens the terminal in the package directory.
- `Terminal`: Opens the terminal in the package directory.
- `Explorer`: Opens the file explorer in the package directory.
- `Explorer`: Opens the file explorer in the package directory.
- `Open Readme`: Opens the README file in the package if available. This option is only visible if the package has a README file.
@ -39,7 +39,10 @@ If There are more than one module which is openable via Suite, Studio will ask y
### Opening from context menu
### Opening from context menu
Alternatively, you can right click to a module in [Solution Explorer](solution-explorer.md) and click `ABP Suite` to open it with Suite. Suite will automatically open `Crud Page Generation` screen with the selected module.
You can right-click on the solution root or a module in [Solution Explorer](solution-explorer.md) and click `ABP Suite` to open it with Suite.
- **Solution root**: If you right-click on the solution root and select `ABP Suite`, Studio will ask you to pick a module if there are multiple modules. Suite will then open with the selected module.
- **Module**: If you right-click on a specific module and select `ABP Suite`, Suite will automatically open `Crud Page Generation` screen with that module.
@ -51,10 +54,14 @@ Standard application solutions (`App` & `App-nolayers`) generated by Studio are
You can generate code on the services of the microservice solution. UI code generation is not supported at the moment. It is on the roadmap.
You can generate code on the services of the microservice solution. UI code generation is not supported at the moment. It is on the roadmap.
## Managing Installed Version
## Managing Installed Version
You can update or downgrade the version of `ABP Suite` by `Change Version` button in `ABP Suite` menu.
You can update or downgrade the version of `ABP Suite` by `Change Version` button in `ABP Suite` menu.
### Automatic Version Matching
When you open ABP Suite for a solution, Studio checks if the installed Suite version matches the solution's ABP version. If they differ, Studio will prompt you to update or downgrade Suite to match your solution's version. This ensures compatibility between Suite and your project.