@ -1,8 +1,8 @@ |
|||
blank_issues_enabled: true |
|||
blank_issues_enabled: false |
|||
contact_links: |
|||
- name: Issue with ABP Commercial |
|||
url: https://support.abp.io/QA/Questions |
|||
about: Please open ABP Commercial related issues at https://support.abp.io. |
|||
url: https://abp.io/support/questions |
|||
about: Please open ABP Commercial related issues at https://abp.io/support/questions. |
|||
- name: Ask a question (community support) |
|||
url: https://stackoverflow.com/questions/tagged/abp |
|||
about: Ask a question that will be answered by the ABP community |
|||
|
|||
@ -1,54 +1,79 @@ |
|||
import os |
|||
import json |
|||
import re |
|||
import xml.etree.ElementTree as ET |
|||
from github import Github |
|||
|
|||
def update_latest_versions(): |
|||
version = os.environ["GITHUB_REF"].split("/")[-1] |
|||
def get_target_release_branch(version): |
|||
""" |
|||
Extracts the first two numbers from the release version (`9.0.5` → `rel-9.0`) |
|||
to determine the corresponding `rel-x.x` branch. |
|||
""" |
|||
match = re.match(r"(\d+)\.(\d+)\.\d+", version) |
|||
if not match: |
|||
raise ValueError(f"Invalid version format: {version}") |
|||
|
|||
if "rc" in version: |
|||
return False |
|||
major, minor = match.groups() |
|||
target_branch = f"rel-{major}.{minor}" |
|||
return target_branch |
|||
|
|||
with open("latest-versions.json", "r") as f: |
|||
latest_versions = json.load(f) |
|||
def get_version_from_common_props(branch): |
|||
""" |
|||
Retrieves `Version` and `LeptonXVersion` from the `common.props` file in the specified branch. |
|||
""" |
|||
g = Github(os.environ["GITHUB_TOKEN"]) |
|||
repo = g.get_repo("abpframework/abp") |
|||
|
|||
latest_versions[0]["version"] = version |
|||
try: |
|||
file_content = repo.get_contents("common.props", ref=branch) |
|||
common_props_content = file_content.decoded_content.decode("utf-8") |
|||
|
|||
with open("latest-versions.json", "w") as f: |
|||
json.dump(latest_versions, f, indent=2) |
|||
root = ET.fromstring(common_props_content) |
|||
version = root.find(".//Version").text |
|||
leptonx_version = root.find(".//LeptonXVersion").text |
|||
|
|||
return True |
|||
return version, leptonx_version |
|||
except Exception as e: |
|||
raise FileNotFoundError(f"common.props not found in branch {branch}: {e}") |
|||
|
|||
def create_pr(): |
|||
g = Github(os.environ["GITHUB_TOKEN"]) |
|||
repo = g.get_repo("abpframework/abp") |
|||
def update_latest_versions(): |
|||
""" |
|||
Updates `latest-versions.json` based on the most relevant release branch. |
|||
""" |
|||
# Get the release version from GitHub reference |
|||
release_version = os.environ["GITHUB_REF"].split("/")[-1] # Example: "refs/tags/v9.0.5" → "v9.0.5" |
|||
if release_version.startswith("v"): |
|||
release_version = release_version[1:] # Convert to "9.0.5" format |
|||
|
|||
branch_name = f"update-latest-versions-{os.environ['GITHUB_REF'].split('/')[-1]}" |
|||
base = repo.get_branch("dev") |
|||
repo.create_git_ref(ref=f"refs/heads/{branch_name}", sha=base.commit.sha) |
|||
# Determine the correct `rel-x.x` branch |
|||
target_branch = get_target_release_branch(release_version) |
|||
|
|||
# Retrieve `common.props` data from the target branch |
|||
version, leptonx_version = get_version_from_common_props(target_branch) |
|||
|
|||
# Get the current latest-versions.json file and its sha |
|||
contents = repo.get_contents("latest-versions.json", ref="dev") |
|||
file_sha = contents.sha |
|||
# Skip if the version is a preview or release candidate |
|||
if "preview" in version or "rc" in version: |
|||
return False |
|||
|
|||
# Update the file in the repo |
|||
repo.update_file( |
|||
path="latest-versions.json", |
|||
message=f"Update latest-versions.json to version {os.environ['GITHUB_REF'].split('/')[-1]}", |
|||
content=open("latest-versions.json", "r").read().encode("utf-8"), |
|||
sha=file_sha, |
|||
branch=branch_name, |
|||
) |
|||
# Read the `latest-versions.json` file |
|||
with open("latest-versions.json", "r") as f: |
|||
latest_versions = json.load(f) |
|||
|
|||
try: |
|||
pr = repo.create_pull(title="Update latest-versions.json", |
|||
body="Automated PR to update the latest-versions.json file.", |
|||
head=branch_name, base="dev") |
|||
except Exception as e: |
|||
print(f"Error while creating PR: {e}") |
|||
# Add the new version entry |
|||
new_version_entry = { |
|||
"version": version, |
|||
"releaseDate": "", |
|||
"type": "stable", |
|||
"message": "", |
|||
"leptonx": { |
|||
"version": leptonx_version |
|||
} |
|||
} |
|||
|
|||
latest_versions.insert(0, new_version_entry) # Insert the new version at the top |
|||
|
|||
pr.create_review_request(reviewers=["ebicoglu", "gizemmutukurt", "skoc10"]) |
|||
# Update the file |
|||
with open("latest-versions.json", "w") as f: |
|||
json.dump(latest_versions, f, indent=2) |
|||
|
|||
if __name__ == "__main__": |
|||
should_create_pr = update_latest_versions() |
|||
if should_create_pr: |
|||
create_pr() |
|||
return True |
|||
|
|||
@ -1,3 +1,3 @@ |
|||
## Contribution |
|||
|
|||
See the [contribution guide](docs/en/Contribution/Index.md). |
|||
The contribution guide is available at [contribution guide](docs/en/contribution/index.md). |
|||
|
|||
@ -1,8 +1,9 @@ |
|||
{ |
|||
"culture": "en", |
|||
"texts": { |
|||
"AbpTitle": "Read All Blog Posts", |
|||
"AbpTitle": "New Blog Post | ABP.IO", |
|||
"AbpDescription": "ABP is an open source application framework focused on AspNet Core based web application development. Don't repeat yourself, focus on your own business code.", |
|||
"AbpDefinition": "ABP blog for .NET development, cross-platform, ASP.NET application templates, ABP-related news and more..." |
|||
"AbpDefinition": "Create a new blog post and share your knowledge and experience with ABP.", |
|||
"Blogs": "Blog Posts" |
|||
} |
|||
} |
|||
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 268 KiB After Width: | Height: | Size: 261 KiB |
@ -0,0 +1,77 @@ |
|||
# ABP.IO Platform 8.3 Final Has Been Released! |
|||
|
|||
 |
|||
|
|||
[ABP](https://abp.io/) 8.3 stable version has been released today. |
|||
|
|||
## What's New With Version 8.3? |
|||
|
|||
All the new features were explained in detail in the [8.3 RC Announcement Post](https://blog.abp.io/abp/announcing-abp-8-3-release-candidate), so there is no need to review them again. You can check it out for more details. |
|||
|
|||
## Getting Started with 8.3 |
|||
|
|||
### Creating New Solutions |
|||
|
|||
You can check the [Get Started page](https://abp.io/get-started) to see how to get started with ABP. You can either download [ABP Studio](https://abp.io/get-started#abp-studio-tab) (**recommended**, if you prefer a user-friendly GUI application - desktop application) or use the [ABP CLI](https://abp.io/docs/latest/cli) to create new solutions. |
|||
|
|||
By default, ABP Studio uses stable versions to create solutions. Therefore, it will be creating the solution with the latest stable version, which is v8.3 for now, so you don't need to specify the version. |
|||
|
|||
### How to Upgrade an Existing Solution |
|||
|
|||
You can upgrade your existing solutions with either ABP Studio or ABP CLI. In the following sections, both approaches are explained: |
|||
|
|||
### Upgrading via ABP Studio |
|||
|
|||
If you are already using the ABP Studio, you can upgrade it to the latest version to align it with ABP v8.3. ABP Studio periodically checks for updates in the background, and when a new version of ABP Studio is available, you will be notified through a modal. Then, you can update it by confirming the opened modal. See [the documentation](https://abp.io/docs/latest/studio/installation#upgrading) for more info. |
|||
|
|||
After upgrading the ABP Studio, then you can open your solution in the application, and simply click the **Switch to stable** action button to instantly upgrade your solution: |
|||
|
|||
 |
|||
|
|||
### Upgrading via ABP CLI |
|||
|
|||
Alternatively, you can upgrade your existing solution via ABP CLI. First, you need to install the ABP CLI or upgrade it to the latest version. |
|||
|
|||
If you haven't installed it yet, you can run the following command: |
|||
|
|||
```bash |
|||
dotnet tool install -g Volo.Abp.Studio.Cli |
|||
``` |
|||
|
|||
Or to update the existing CLI, you can run the following command: |
|||
|
|||
```bash |
|||
dotnet tool update -g Volo.Abp.Studio.Cli |
|||
``` |
|||
|
|||
After installing/updating the ABP CLI, you can use the [`update` command](https://abp.io/docs/latest/CLI#update) to update all the ABP related NuGet and NPM packages in your solution as follows: |
|||
|
|||
```bash |
|||
abp update |
|||
``` |
|||
|
|||
> You can run this command in the root folder of your solution. |
|||
|
|||
## Migration Guides |
|||
|
|||
There are a few breaking changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v8.2 or earlier: [ABP Version 8.3 Migration Guide](https://abp.io/docs/8.3/release-info/migration-guides/abp-8-3) |
|||
|
|||
## Community News |
|||
|
|||
### New ABP Community Posts |
|||
|
|||
As always, exciting articles have been contributed by the ABP community. I will highlight some of them here: |
|||
|
|||
* [Alper Ebicoglu](https://twitter.com/alperebicoglu) has created **three** new community articles: |
|||
* [Do You Really Need Multi-tenancy?](https://abp.io/community/articles/do-you-really-need-multitenancy-hpwn44r3) |
|||
* [What is Angular Schematics?](https://abp.io/community/articles/what-is-angular-schematics-2z4jusf5) |
|||
* [Understanding Angular AOT vs JIT Compilations](https://abp.io/community/articles/understanding-angular-aot-vs-jit-compilations-0r0a0a3f) |
|||
* [Dynamic Widget Communication](https://abp.io/community/articles/dynamic-widget-communication-uvun7q23) by [Suhaib Mousa](https://suhaibmousa.com/) |
|||
* [Introducing the Google Cloud Storage BLOB Provider](https://abp.io/community/articles/introducing-the-google-cloud-storage-blob-provider-yrt6azc0) by [Engincan Veske](https://twitter.com/EngincanVeske) |
|||
* [Switching Between Organization Units](https://abp.io/community/articles/switching-between-organization-units-i5tokpzt) by [Liming Ma](https://github.com/maliming) |
|||
|
|||
Thanks to the ABP Community for all the content they have published. You can also [post your ABP-related (text or video) content](https://abp.io/community/posts/create) to the ABP Community. |
|||
|
|||
## About the Next Version |
|||
|
|||
The next feature version will be 9.0. You can follow the [release planning here](https://github.com/abpframework/abp/milestones). Please [submit an issue](https://github.com/abpframework/abp/issues/new) if you have any problems with this version. |
|||
|
After Width: | Height: | Size: 6.9 MiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 145 KiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
|
After Width: | Height: | Size: 422 KiB |
|
After Width: | Height: | Size: 728 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 263 KiB |
|
After Width: | Height: | Size: 538 KiB |
|
After Width: | Height: | Size: 44 KiB |
@ -0,0 +1,87 @@ |
|||
# DotNext 2024 Conference: A Speaker’s Impressions |
|||
|
|||
 |
|||
|
|||
Last week, I had the chance of being a speaker at **DotNext 2024** in Moscow. [JUG Ru Group](https://jugru.org/en/) is arranging the DotNext Conferences since [2014](https://dotnext.ru/archive/). It's a specific conference for .NET developers held at the [MonArch Moscow Hotel](https://www.moscowmonarch.com/) on 10, 11 September 2024. This event brought together over **600 developers on-site, 200 developers online**, with around **35 speakers** delivering more than **30 talks**, making it one of the largest gatherings of the .NET community in Russia. |
|||
|
|||
 |
|||
|
|||
--- |
|||
|
|||
|
|||
|
|||
## Key Highlights & Popular Sessions |
|||
|
|||
One of the standout aspects of the conference was its strong technical focus, particularly on deep-dive .NET topics. Talks covered subjects like **low-level optimizations**, architecture, performance, and platform internals. |
|||
|
|||
The conference started with Sergei Benzenko's talk "What's New in .NET 9". There are important topics like ".NET Aspire in Action", "AI-Driven Software Development", "DDD and Strategic Design" and "OAuth 2.0 User-Managed Access in ASP.NET Core with Keycloak". |
|||
|
|||
 |
|||
|
|||
There were two international speakers: me and Halil Ibrahim Kalkan from ABP Core Team. Halil's topic was **Implementing Domain-Driven Design as a Pragmatic Developer**. In his session, he gave practical real world examples of bad and best practices of DDD development. |
|||
|
|||
 |
|||
|
|||
|
|||
--- |
|||
|
|||
|
|||
|
|||
## My Talk |
|||
|
|||
My presentation topic was **Building Multi-Tenant ASP.NET Core Applications** was part of this technical deep dive, and I was thrilled to see so much interest in scalable multi-tenant solutions. I generally talked about meta data in SaaS development and explained how to identify the active tenant, how to isolate the data in the same database, how to set `TenantId` automatically for new entities, how to select DB connection for the active tenant, how to change the active tenant when needed, how to disable multi-tenancy temporarily, how to handle database migrations and lastly feature system. These features are major multi-tenancy features, and you'll learn how they are implemented in an open-source web app framework. |
|||
|
|||
 |
|||
|
|||
 |
|||
|
|||
- My presentation 🌐https://github.com/ebicoglu/presentations/tree/main. |
|||
|
|||
- My conf profile🌐 https://dotnext.ru/en/persons/cbe6e4b2cc214a47bfc3752cdb0b1f88/ |
|||
|
|||
|
|||
 |
|||
|
|||
--- |
|||
|
|||
|
|||
|
|||
## Venue and Atmosphere |
|||
|
|||
The MonArch Moscow Hotel provided a great venue, combining spacious halls for sessions with cozy areas for networking. There were also afterparty events, which added a fun, informal touch to the otherwise highly technical environment. The setup allowed plenty of opportunities for spontaneous discussions with attendees and experts, both during and after the sessions. |
|||
|
|||
 |
|||
|
|||
|
|||
--- |
|||
|
|||
|
|||
|
|||
## Boat Tour on Moscow River |
|||
|
|||
After the conference ended, the organizing team took all the speakers on a boat tour on the Moscow River. It was a great open buffet dinner in a nice boat. We had a chance to chat with other speakers. |
|||
|
|||
 |
|||
|
|||
--- |
|||
|
|||
|
|||
|
|||
## Networking and Community |
|||
|
|||
DotNext 2024 provided an excellent platform for connecting with fellow developers and industry leaders. In addition to presentations, there were plenty of opportunities to interact with other participants, including representatives from Microsoft, Volosoft, and local Russian tech giants like Ozon and beeline. The exhibition hall was filled with partner stands, including those from PVS-Studio, Kontur, Eremex and OzonTech which offered interactive displays and demos. |
|||
|
|||
--- |
|||
|
|||
|
|||
|
|||
## Conclusion |
|||
|
|||
Overall, DotNext 2024 lived up to its reputation as a key event for .NET developers. From highly technical talks to networking opportunities, it was a fantastic experience, and I came away with new insights into both the technical and community aspects of the .NET ecosystem. If you’re a .NET developer looking to stay ahead in your field, DotNext is definitely a conference worth attending! |
|||
|
|||
Looking forward to come again! |
|||
|
|||
|
|||
Lastly, I took some beautiful photos of Moscow, here are a few... |
|||
|
|||
 |
|||
|
After Width: | Height: | Size: 274 KiB |
@ -0,0 +1,223 @@ |
|||
# ABP Platform 9.0 Has Been Released Based on .NET 9.0 |
|||
|
|||
 |
|||
|
|||
Today, we are happy to release the [ABP](https://abp.io/) version **9.0 RC** (Release Candidate). This blog post introduces the new features and important changes in this new version. |
|||
|
|||
Try this version and provide feedback for a more stable version of ABP v9.0! Thanks to all of you. |
|||
|
|||
## Get Started with the 9.0 RC |
|||
|
|||
You can check the [Get Started page](https://abp.io/get-started) to see how to get started with ABP. You can either download [ABP Studio](https://abp.io/get-started#abp-studio-tab) (**recommended**, if you prefer a user-friendly GUI application - desktop application) or use the [ABP CLI](https://abp.io/docs/latest/cli). |
|||
|
|||
By default, ABP Studio uses stable versions to create solutions. Therefore, if you want to create a solution with a preview version, first you need to create a solution and then switch your solution to the preview version from the ABP Studio UI: |
|||
|
|||
 |
|||
|
|||
## Migration Guide |
|||
|
|||
There are a few breaking changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v8.x: [ABP Version 9.0 Migration Guide](https://abp.io/docs/9.0/release-info/migration-guides/abp-9-0) |
|||
|
|||
## What's New with ABP v9.0? |
|||
|
|||
In this section, I will introduce some major features released in this version. |
|||
Here is a brief list of titles explained in the next sections: |
|||
|
|||
* Upgraded to .NET 9.0 |
|||
* Introducing the **Extension Property Policy** |
|||
* Allow wildcards for Redirect Allowed URLs |
|||
* Docs Module: Show larger images on the same page |
|||
* Google Cloud Storage BLOB Provider |
|||
* Removed React Native mobile option from free templates |
|||
* Suite: Better naming for multiple navigation properties to the same entity |
|||
* CMS Kit Pro: Feedback feature improvements |
|||
|
|||
### Upgraded to .NET 9.0 |
|||
|
|||
We've upgraded ABP to .NET 9.0, so you need to move your solutions to .NET 9.0 if you want to use ABP 9.0. You can check [Microsoft’s Migrate from ASP.NET Core 8.0 to 9.0 documentation](https://learn.microsoft.com/en-us/aspnet/core/migration/80-90), to see how to update an existing ASP.NET Core 8.0 project to ASP.NET Core 9.0. |
|||
|
|||
> **Note:** Since the stable version of .NET 9 hasn't been released yet, we upgraded ABP to .NET v9.0-rc.2. We will update the entire ABP Platform to .NET 9 stable, after Microsoft releases it on November 13-14 with the stable ABP 9.0 release. |
|||
|
|||
### Introducing the Extension Property Policy |
|||
|
|||
ABP provides a module entity extension system, which is a high level extension system that allows you to define new properties for existing entities of the depended modules. This is a powerful way to dynamically add additional properties to entities without modifying the core structure. However, managing these properties across different modules and layers can become complex, especially when different policies or validation rules are required. |
|||
|
|||
**Extension Property Policy** feature allows developers to define custom policies for these properties, such as access control, validation, and data transformation, directly within ABP. |
|||
|
|||
**Example:** |
|||
|
|||
```csharp |
|||
ObjectExtensionManager.Instance.Modules().ConfigureIdentity(identity => |
|||
{ |
|||
identity.ConfigureUser(user => |
|||
{ |
|||
user.AddOrUpdateProperty<string>( //property type: string |
|||
"SocialSecurityNumber", //property name |
|||
property => |
|||
{ |
|||
//validation rules |
|||
property.Attributes.Add(new RequiredAttribute()); |
|||
property.Attributes.Add(new StringLengthAttribute(64) {MinimumLength = 4}); |
|||
|
|||
//Global Features |
|||
property.Policy.GlobalFeatures = new ExtensionPropertyGlobalFeaturePolicyConfiguration() |
|||
{ |
|||
Features = new[] {"GlobalFeatureName1", "GlobalFeatureName2"}, |
|||
RequiresAll = true |
|||
}; |
|||
|
|||
//Features |
|||
property.Policy.Features = new ExtensionPropertyFeaturePolicyConfiguration() |
|||
{ |
|||
Features = new[] {"FeatureName1", "FeatureName2"}, |
|||
RequiresAll = false |
|||
}; |
|||
|
|||
//Permissions |
|||
property.Policy.Permissions = new ExtensionPropertyPermissionPolicyConfiguration() |
|||
{ |
|||
PermissionNames = new[] {"AbpTenantManagement.Tenants.Update", "AbpTenantManagement.Tenants.Delete"}, |
|||
RequiresAll = true |
|||
}; |
|||
} |
|||
); |
|||
}); |
|||
}); |
|||
``` |
|||
|
|||
### Allow Wildcards for RedirectAllowedURLs |
|||
|
|||
In this version, we made an improvement to the `RedirectAllowedUrls` configuration, which now allows greater flexibility in defining redirect URLs. Previously, developers faced restrictions when configuring URL redirects. Specifically, the `RedirectAllowedUrls` did not support using **wildcards (*)**, limiting how developers could specify which URLs were permissible for redirects. |
|||
|
|||
With the new changes in [#20628](https://github.com/abpframework/abp/pull/20628), the restriction has been relaxed, allowing developers to define redirect URLs that include wildcards. This makes it easier to handle scenarios where a broad range of URLs need to be allowed, without explicitly listing each one. |
|||
|
|||
```json |
|||
{ |
|||
"App": { |
|||
//... |
|||
"RedirectAllowedUrls": "http://*.domain,http://*.domain:4567" |
|||
} |
|||
``` |
|||
|
|||
### Docs Module: Show Larger Images |
|||
|
|||
As developers, we rely heavily on clear documentation to understand complex concepts and workflows. Often, an image is worth more than a thousand words, especially when explaining intricate user interfaces, workflows, or code structures. In recognition of this, we recently rolled out an improvement to the Docs Module that enables larger images to be displayed more effectively. |
|||
|
|||
 |
|||
|
|||
Before this enhancement, images embedded in documentation were often limited in size, which sometimes made it difficult to see the details in the diagrams, screenshots, or other visual contents. Now, images can be displayed at a larger size, offering better clarity and usability. |
|||
|
|||
> See [https://github.com/abpframework/abp/pull/20557](https://github.com/abpframework/abp/pull/20557) for more information. |
|||
|
|||
### Google Cloud Storage BLOB Provider |
|||
|
|||
ABP provides a BLOB Storing System, which allows you to work with BLOBs. This system is typically used to store file contents in a project and read these file contents when they are needed. Since ABP provides an abstraction to work with BLOBs, it also provides some pre-built storage providers such as [Azure](https://abp.io/docs/latest/framework/infrastructure/blob-storing/azure), [Aws](https://abp.io/docs/latest/framework/infrastructure/blob-storing/aws) and [Aliyun](https://abp.io/docs/latest/framework/infrastructure/blob-storing/aliyun). |
|||
|
|||
In this version, we have introduced a new BLOB Storage Provider for Google Cloud Storage: [`Volo.Abp.BlobStoring.Google`](https://www.nuget.org/packages/Volo.Abp.BlobStoring.Google) |
|||
|
|||
You can [read the documentation](https://abp.io/docs/9.0/framework/infrastructure/blob-storing/google) for configurations and use Google Cloud Storage as your BLOB Storage Provider easily. |
|||
|
|||
### Removed React Native Mobile Option From Free Templates |
|||
|
|||
In this version, we removed the **React Native** mobile option from the open source templates due to maintaining reasons. We updated the related documents and the ABP CLI (both old & new CLI) for this change, and with v9.0, you will not be able to create a free template with react-native as the mobile option. |
|||
|
|||
> **Note:** Pro templates still provide the **React Native** as the mobile option and we will continue supporting it. |
|||
|
|||
If you want to access the open-source React-Native template, you can visit the abp-archive repository from [here](https://github.com/abpframework/abp-archive). |
|||
|
|||
### Suite: Better Naming For Multiple Navigation Properties |
|||
|
|||
Prior to this version, when you defined multiple (same) navigation properties to same entity, then ABP Suite was renaming them with a duplicate number. |
|||
|
|||
As an example,let's assume that you have a book with an author and coauthor, prior to this version ABP Suite was creating a DTO class as below: |
|||
|
|||
```csharp |
|||
public class BookWithNavigationPropertiesDto |
|||
{ |
|||
public BookDto Book { get; set; } |
|||
|
|||
public AuthorDto Author { get; set; } |
|||
|
|||
public AuthorDto Author1 { get; set; } |
|||
} |
|||
``` |
|||
|
|||
Notice, that since the book entity has two same navigation properties, ABP Suite renamed them with a duplicate number. In this version, ABP Suite will ask you to define a propertyName for the **navigation properties** and you'll be able to specify a meaningful name such as (*CoAuthor*, in this example): |
|||
|
|||
```csharp |
|||
public class BookWithNavigationPropertiesDto |
|||
{ |
|||
public BookDto Book { get; set; } |
|||
|
|||
public AuthorDto Author { get; set; } |
|||
|
|||
//used the specified property name |
|||
public AuthorDto CoAuthor { get; set; } |
|||
} |
|||
``` |
|||
|
|||
ABP Suite respects the specified property name for the related navigation property and generates codes regarding that (by removing the *Id* postfix for the related places): |
|||
|
|||
 |
|||
|
|||
### CMS Kit Pro: Feedback Feature Improvements |
|||
|
|||
In this version, we revised the [CMS Kit's Feedback Feature](https://abp.io/docs/9.0/modules/cms-kit-pro/page-feedback) and as a result, we made the following improvements: |
|||
|
|||
* A new **auto-handle** setting has been added to the settings page. When this feature is enabled, if feedback is submitted without a user note, the feedback is automatically marked as handled. |
|||
* You can now require users to enter a note when submitting negative feedback. This can be configured in the settings page, ensuring that users provide context when they submit critical feedback. |
|||
* We've added a feedback user ID that is saved in local storage. This allows you to track the number of unique users submitting feedback or determine if the same user is sending new feedback on updated documents. |
|||
|
|||
> For further information about the Page Feedback System, please refer to the [documentation](https://abp.io/docs/9.0/modules/cms-kit-pro/page-feedback). |
|||
|
|||
## Community News |
|||
|
|||
### Join ABP at the .NET Conf 2024! |
|||
|
|||
ABP is excited to sponsor the [14th annual .NET Conf](https://www.dotnetconf.net/)! We've proudly supported the .NET community for years and recognize the importance of this premier virtual event. Mark your calendars for November 12-14, 2024, and join us for 3 incredible days of learning, networking, and fun. |
|||
|
|||
 |
|||
|
|||
Also, don't miss out on the co-founder of [Volosoft](https://volosoft.com/) and Lead Developer of [ABP](https://abp.io/), [Halil Ibrahim Kalkan](https://x.com/hibrahimkalkan)'s talk about "Building Modular Monolith Applications with ASP.NET Core and ABP Studio" at 10:00 - 10:30 AM GMT+3 on Thursday, November 14. |
|||
|
|||
### ABP Team Attended the .NETDeveloperDays 2024 |
|||
|
|||
We are thrilled to announce that we sponsored the [.NETDevelopersDays 2024](https://developerdays.eu/warsaw/) event. It's one of the premier conferences for .NET developers with **over 1.000 attendees**, **50+ expert speakers**, and **40+ sessions and workshops**. |
|||
|
|||
 |
|||
|
|||
Core team members of the ABP Framework, [Halil Ibrahim Kalkan](https://twitter.com/hibrahimkalkan), [İsmail Çağdaş](https://x.com/ismcagdas), [Enis Necipoğlu](https://x.com/EnisNecipoglu), and [Tarık Özdemir](https://x.com/mtozdemir) attended [.NETDevelopersDays 2024](https://developerdays.eu/warsaw/) on October 22-23, 2024 at Warsaw, Poland. |
|||
|
|||
These 2 days with the team were all about chatting and having fun with amazing attendees and speakers. We met with talented and passionate software developers and introduced the [ABP](https://github.com/abpframework/abp) - web application framework built on ASP.NET Core - to them. |
|||
|
|||
Also, we made a raffle and gifted an Xbox Series S to the lucky winner at the event: |
|||
|
|||
 |
|||
|
|||
Thanks to everyone who joined the fun and visited at our booth :) |
|||
|
|||
### New ABP Community Articles |
|||
|
|||
There are exciting articles contributed by the ABP community as always. I will highlight some of them here: |
|||
|
|||
* [Alper Ebiçoğlu](https://twitter.com/alperebicoglu) has created **five** new community articles: |
|||
* [When to Use Cookies, When to Use Local Storage?](https://abp.io/community/articles/when-to-use-cookies-when-to-use-local-storage-uexsjunf) |
|||
* [.NET 9 Performance Improvements Summary](https://abp.io/community/articles/.net-9-performance-improvements-summary-gmww3gl8) |
|||
* [ASP.NET Core SignalR New Features — Summary](https://abp.io/community/articles/asp.net-core-signalr-new-features-summary-kcydtdgq) |
|||
* [Difference Between "Promise" and "Observable" in Angular](https://abp.io/community/articles/difference-between-promise-and-observable-in-angular-bxv97pkc) |
|||
* [ASP.NET Core Blazor 9.0 New Features Summary 🆕](https://abp.io/community/articles/asp.net-core-blazor-9.0-new-features-summary--x0fovych) |
|||
* [Mohammad AlMohammad AlMahmoud](https://abp.io/community/members/Mohammad97Dev) has created **two** new community articles: |
|||
* [Implementing Multi-Language Functionality With ABP Framework](https://abp.io/community/articles/implementing-multilanguage-functionality-with-abp-framework-loq7kfx4) |
|||
* [Configure Quartz.Net in Abp FrameWork](https://abp.io/community/articles/configure-quartz.net-in-abp-framework-3bveq4y1) |
|||
* [.NET Aspire vs ABP Studio: Side by Side](https://abp.io/community/articles/.net-aspire-vs-abp-studio-side-by-side-t1c73d1l) by [Halil İbrahim Kalkan](https://twitter.com/hibrahimkalkan) |
|||
* [PoC of using GrapesJS for ABPs CMS Kit](https://abp.io/community/articles/poc-of-using-grapesjs-for-abps-cms-kit-1rmv4q41) by [Jack Fistelmann](https://abp.io/community/members/jfistelmann) |
|||
* [ABP-Powered Web App with Inertia.js, React, and Vite](https://abp.io/community/articles/abppowered-web-app-with-inertia.js-react-and-vite-j7cccvad) by [Anto Subash](https://antosubash.com/) |
|||
* [Multi-Tenancy Support in Angular Apps with ABP.IO](https://abp.io/community/articles/multitenancy-support-in-angular-apps-with-abp.io-lw9l36c5) by [HeadChannel Team](https://headchannel.co.uk/) |
|||
|
|||
Thanks to the ABP Community for all the content they have published. You can also [post your ABP-related (text or video) content](https://abp.io/community/posts/create) to the ABP Community. |
|||
|
|||
## Conclusion |
|||
|
|||
This version comes with some new features and a lot of enhancements to the existing features. You can see the [Road Map](https://abp.io/docs/9.0/release-info/road-map) documentation to learn about the release schedule and planned features for the next releases. Please try ABP v9.0 RC and provide feedback to help us release a more stable version. |
|||
|
|||
Thanks for being a part of this community! |
|||
|
After Width: | Height: | Size: 287 KiB |
|
After Width: | Height: | Size: 525 KiB |
|
After Width: | Height: | Size: 212 KiB |
|
After Width: | Height: | Size: 892 KiB |
|
After Width: | Height: | Size: 142 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 189 KiB |
|
After Width: | Height: | Size: 525 KiB |
@ -0,0 +1,93 @@ |
|||
# ABP.IO Platform 9.0 Has Been Released Based on .NET 9.0 |
|||
|
|||
 |
|||
|
|||
Today, [ABP](https://abp.io/) 9.0 stable version has been released based on [.NET 9.0](https://dotnet.microsoft.com/en-us/download/dotnet/9.0). You can create solutions with ABP 9.0 starting from ABP Studio v0.9.11 or by using the ABP CLI as explained in the following sections. |
|||
|
|||
## What's New With Version 9.0? |
|||
|
|||
All the new features were explained in detail in the [9.0 RC Announcement Post](https://abp.io/blog/announcing-abp-9-0-release-candidate), so there is no need to review them again. You can check it out for more details. |
|||
|
|||
## Getting Started with 9.0 |
|||
|
|||
### Creating New Solutions |
|||
|
|||
You can check the [Get Started page](https://abp.io/get-started) to see how to get started with ABP. You can either download [ABP Studio](https://abp.io/get-started#abp-studio-tab) (**recommended**, if you prefer a user-friendly GUI application - desktop application) or use the [ABP CLI](https://abp.io/docs/latest/cli) to create new solutions. |
|||
|
|||
By default, ABP Studio uses stable versions to create solutions. Therefore, it will be creating the solution with the latest stable version, which is v9.0 for now, so you don't need to specify the version. **You can create solutions with ABP 9.0 starting from v0.9.11.** |
|||
|
|||
### How to Upgrade an Existing Solution |
|||
|
|||
You can upgrade your existing solutions with either ABP Studio or ABP CLI. In the following sections, both approaches are explained: |
|||
|
|||
### Upgrading via ABP Studio |
|||
|
|||
If you are already using the ABP Studio, you can upgrade it to the latest version to align it with ABP v9.0. ABP Studio periodically checks for updates in the background, and when a new version of ABP Studio is available, you will be notified through a modal. Then, you can update it by confirming the opened modal. See [the documentation](https://abp.io/docs/latest/studio/installation#upgrading) for more info. |
|||
|
|||
After upgrading the ABP Studio, then you can open your solution in the application, and simply click the **Switch to stable** action button to instantly upgrade your solution: |
|||
|
|||
 |
|||
|
|||
> Please note that ABP CLI & ABP Studio only upgrade the related ABP packages, so you need to upgrade the other packages for .NET 9.0 manually. |
|||
|
|||
### Upgrading via ABP CLI |
|||
|
|||
Alternatively, you can upgrade your existing solution via ABP CLI. First, you need to install the ABP CLI or upgrade it to the latest version. |
|||
|
|||
If you haven't installed it yet, you can run the following command: |
|||
|
|||
```bash |
|||
dotnet tool install -g Volo.Abp.Studio.Cli |
|||
``` |
|||
|
|||
Or to update the existing CLI, you can run the following command: |
|||
|
|||
```bash |
|||
dotnet tool update -g Volo.Abp.Studio.Cli |
|||
``` |
|||
|
|||
After installing/updating the ABP CLI, you can use the [`update` command](https://abp.io/docs/latest/CLI#update) to update all the ABP related NuGet and NPM packages in your solution as follows: |
|||
|
|||
```bash |
|||
abp update |
|||
``` |
|||
|
|||
You can run this command in the root folder of your solution to update all ABP related packages. |
|||
|
|||
> Please note that ABP CLI & ABP Studio only upgrade the related ABP packages, so you need to upgrade the other packages for .NET 9.0 manually. |
|||
|
|||
## Migration Guides |
|||
|
|||
There are a few breaking changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v8.x: [ABP Version 9.0 Migration Guide](https://abp.io/docs/9.0/release-info/migration-guides/abp-9-0) |
|||
|
|||
## Community News |
|||
|
|||
### Highlights from .NET 9.0 |
|||
|
|||
Our team has closely followed the ASP.NET Core and Entity Framework Core 9.0 releases, read Microsoft's guides and documentation, and adapted the changes to our ABP.IO Platform. We are proud to say that we've shipped the ABP 9.0 based on .NET 9.0 just after Microsoft's .NET 9.0 release. |
|||
|
|||
In addition to the ABP's .NET 9.0 upgrade, our team has created many great articles to highlight the important features coming with ASP.NET Core 9.0 and Entity Framework Core 9.0. |
|||
|
|||
> You can read [this post](https://volosoft.com/blog/Highlights-for-ASP-NET-Entity-Framework-Core-NET-9-0) to see the list of all articles. |
|||
|
|||
### New ABP Community Articles |
|||
|
|||
In addition to [the articles to highlight .NET 9.0 features written by our team](https://volosoft.com/blog/Highlights-for-ASP-NET-Entity-Framework-Core-NET-9-0), here are some of the recent posts added to the [ABP Community](https://abp.io/community): |
|||
|
|||
* [Video: Building Modular Monolith Applications with ASP.NET Core & ABP Studio](https://abp.io/community/videos/building-modular-monolith-applications-with-asp.net-core-abp-studio-66znukvf) by [Halil İbrahim Kalkan](https://x.com/hibrahimkalkan) |
|||
* [How to create your Own AI Bot on WhatsApp Using an ABP.io Template](https://abp.io/community/articles/how-to-create-your-own-ai-bot-on-whatsapp-using-the-abp-framework-c6jgvt9c) by [Michael Kokula](https://abp.io/community/members/Michal_Kokula) |
|||
* [ABP Now Supports .NET 9](https://abp.io/community/articles/abp-now-supports-.net-9-zpkznc4f) by [Alper Ebiçoğlu](https://x.com/alperebicoglu) |
|||
|
|||
Thanks to the ABP Community for all the content they have published. You can also [post your ABP related (text or video) content](https://abp.io/community/posts/create) to the ABP Community. |
|||
|
|||
### ABP Community Talks 2024.7: What’s New with .NET 9 & ABP 9? |
|||
|
|||
 |
|||
|
|||
In this episode of ABP Community Talks, 2024.7; we will dive into the features that came with .NET 9.0 with [Alper Ebicoglu](https://github.com/ebicoglu), [Engincan Veske](https://github.com/EngincanV), [Berkan Sasmaz](https://github.com/berkansasmaz) and [Ahmet Faruk Ulu](https://github.com/ahmetfarukulu). |
|||
|
|||
## Conclusion |
|||
|
|||
This version comes with some new features and a lot of enhancements to the existing features. You can see the [Road Map](https://docs.abp.io/en/abp/9.0/Road-Map) documentation to learn about the release schedule and planned features for the next releases. Please try ABP v9.0 and provide feedback to help us release more stable versions. |
|||
|
|||
Thanks for being a part of this community! |
|||
|
After Width: | Height: | Size: 27 KiB |
@ -0,0 +1,67 @@ |
|||
# ABP Studio Goes AOT: Faster Startups with Ready-to-Run (R2R) Publishing |
|||
|
|||
We're excited that [ABP Studio](https://abp.io/studio) now supports [Ready-to-Run (R2R) publishing](https://learn.microsoft.com/en-us/dotnet/core/deploying/ready-to-run) (starting from v0.9.16+), a hybrid form of ahead-of-time (AOT) compilation. This enhancement significantly improves the startup time and overall performance of ABP Studio, making it faster and more performant than ever before. |
|||
|
|||
Let's dive into what R2R publishing is, how it works, and the benefits it brings to ABP Studio. |
|||
|
|||
## What is Ready-to-Run (R2R) Publishing? |
|||
|
|||
Ready-to-Run (R2R) is a form of AOT compilation available in the .NET ecosystem. Unlike traditional just-in-time (JIT) compilation, R2R precompiles parts of your application to native code before deployment. This precompiled code helps reduce the startup time by minimizing the work needed during runtime. |
|||
|
|||
However, R2R isn't a complete AOT compilation. Instead, it's a hybrid approach because it stores both: |
|||
|
|||
* **Native code for precompiled methods** (to improve startup time and performance) |
|||
|
|||
* **Intermediate Language (IL) code** for methods that may need further JIT compilation |
|||
|
|||
This hybrid nature is why R2R binaries are typically larger. For ABP Studio, the storage size increased by ~150 MB with R2R enabled, but the trade-off is well worth it for the performance and startup-time gains. |
|||
|
|||
## How R2R (Ready-to-Run) Improves ABP Studio |
|||
|
|||
### Faster Startup Time 🚀 |
|||
|
|||
One of the biggest advantages of R2R publishing is its impact on startup times. In our local tests, enabling R2R resulted in startup times being **reduced by 2.5x** ⬇️. |
|||
|
|||
This means you can get to work faster, without waiting for the application to being startup from the beginning. Whether you're launching ABP Studio to manage projects, generate code, or deploy applications, the improved responsiveness is noticeable. |
|||
|
|||
### Performance Enhancements 📈 |
|||
|
|||
In addition to faster startups, R2R publishing contributes to overall performance improvements. By precompiling frequently used methods, R2R reduces the workload on the JIT compiler during execution, leading to smoother and more efficient operations. |
|||
|
|||
### Trade-offs: Increased Storage Size 🆙 |
|||
|
|||
With great performance comes a slight trade-off: storage size. R2R binaries include both **native** and **IL code**, which increases the file size. In the case of ABP Studio, the storage footprint increased by ~150 MB. However, the substantial improvements in speed and responsiveness make this a worthwhile investment. |
|||
|
|||
## How to Enable R2R Publishing in Your Applications? |
|||
|
|||
If you're developing applications and want to benefit from R2R, here's a quick guide on how to enable it in your .NET projects: |
|||
|
|||
1. You can add the following configuration to your final project's `.csproj` file: |
|||
|
|||
```xml |
|||
<PropertyGroup> |
|||
<PublishReadyToRun>true</PublishReadyToRun> |
|||
</PropertyGroup> |
|||
``` |
|||
|
|||
2. Then, publish your application with the `dotnet publish` command: |
|||
|
|||
```bash |
|||
dotnet publish -c Release |
|||
``` |
|||
|
|||
Alternatively, you can specify the _PublishReadyToRun_ flag directly to the `dotnet publish` command as follows: |
|||
|
|||
```bash |
|||
dotnet publish -c Release -r win-x64 -p:PublishReadyToRun=true |
|||
``` |
|||
|
|||
That's it! Your application will now include precompiled native code for faster startup and great performance benefits. |
|||
|
|||
> Please refer to the [official documentation](https://learn.microsoft.com/en-us/dotnet/core/deploying/ready-to-run) before publishing your application with R2R. |
|||
|
|||
## Conclusion |
|||
|
|||
As ABP team, we're always looking for ways to improve the developer experience. By adopting **Ready-to-Run (R2R) publishing** for ABP Studio, we're aiming to deliver a faster and more efficient tool for your development needs. |
|||
|
|||
Stay tuned for more updates and enhancements as we continue to optimize ABP Studio and please provide us with your invaluable feedback. |
|||
@ -0,0 +1,147 @@ |
|||
# ABP Platform 9.1 RC Has Been Released |
|||
|
|||
We are happy to release [ABP](https://abp.io) version **9.1 RC** (Release Candidate). This blog post introduces the new features and important changes in this new version. |
|||
|
|||
Try this version and provide feedback for a more stable version of ABP v9.1! Thanks to you in advance. |
|||
|
|||
## Get Started with the 9.1 RC |
|||
|
|||
You can check the [Get Started page](https://abp.io/get-started) to see how to get started with ABP. You can either download [ABP Studio](https://abp.io/get-started#abp-studio-tab) (**recommended**, if you prefer a user-friendly GUI application - desktop application) or use the [ABP CLI](https://abp.io/docs/latest/cli). |
|||
|
|||
By default, ABP Studio uses stable versions to create solutions. Therefore, if you want to create a solution with a preview version, first you need to create a solution and then switch your solution to the preview version from the ABP Studio UI: |
|||
|
|||
 |
|||
|
|||
## Migration Guide |
|||
|
|||
There are no breaking changes in this version that would affect your application. Only you might need to update some constant names due to the OpenIddict 6.0 upgrade, which is explained in the [OpenIddict 6.0 migration guide](https://abp.io/docs/9.1/release-info/migration-guides/openiddict5-to-6). |
|||
|
|||
## What's New with ABP v9.1? |
|||
|
|||
In this section, I will introduce some major features released in this version. |
|||
Here is a brief list of titles explained in the next sections: |
|||
|
|||
* Upgraded to Angular 19 |
|||
* Upgraded to OpenIddict 6.0 |
|||
* New Blazor WASM Bundling System |
|||
* Idle Session Warning |
|||
* Lazy Expandable Feature for Documentation |
|||
|
|||
### Upgraded to Angular 19 |
|||
|
|||
We've upgraded the Angular templates and packages to **Angular 19**. This upgrade brings the latest features and improvements from the Angular ecosystem to ABP-based applications, including better performance and development experience. |
|||
|
|||
### Upgraded to OpenIddict 6.0 |
|||
|
|||
OpenIddict 6.0 has been released and we've upgraded the OpenIddict packages to version 6.0 in ABP 9.1. This brings enhanced security features and improved authentication capabilities. The migration is straightforward and mainly involves updating some constant names: |
|||
|
|||
- `OpenIddictConstants.Permissions.Endpoints.Logout` is now `OpenIddictConstants.Permissions.Endpoints.EndSession` |
|||
- `OpenIddictConstants.Permissions.Endpoints.Device` is now `OpenIddictConstants.Permissions.Endpoints.DeviceAuthorization` |
|||
|
|||
If you're using IdentityModel packages directly, you'll need to upgrade them to the latest stable version (8.3.0). This update ensures your applications stay current with the latest security standards and best practices. |
|||
|
|||
> Please refer to the [OpenIddict 6.0 migration guide](https://abp.io/docs/9.1/release-info/migration-guides/openiddict5-to-6) for more information. |
|||
|
|||
### New Blazor WASM Bundling System |
|||
|
|||
We've implemented a new bundling system for Blazor WebAssembly applications that eliminates the need to manually run the `abp bundle` command. This system automatically handles JavaScript and CSS file bundling at runtime, significantly improving both development experience and application loading performance. |
|||
|
|||
**Key improvements include:** |
|||
|
|||
- Automatic bundling of JavaScript and CSS files without manual intervention |
|||
- Dynamic file generation through the host application |
|||
- Better integration with the ABP module system |
|||
- Improved asset management through virtual file system |
|||
|
|||
The new system is particularly beneficial for modular applications, as it allows modules to contribute their assets automatically to the global bundles. This results in a more maintainable and efficient asset management system for Blazor WebAssembly applications. |
|||
|
|||
> Please refer to [this documentation](https://abp.io/docs/9.1/framework/ui/blazor/global-scripts-styles) for more information. |
|||
|
|||
### Idle Session Warning |
|||
|
|||
We've introduced a new idle session warning feature for the [Account (Pro) Module](https://abp.io/docs/latest/modules/account-pro) that helps manage user sessions more effectively. This security enhancement automatically monitors user activity and manages session timeouts in a user-friendly way. |
|||
|
|||
 |
|||
|
|||
The feature can be easily configured through the administration interface, where administrators can: |
|||
|
|||
- Enable/disable the idle session timeout |
|||
- Set custom timeout duration in minutes |
|||
- Configure when users should be signed out |
|||
|
|||
When a user becomes inactive for the configured duration, they'll receive a warning dialog: |
|||
|
|||
 |
|||
|
|||
**Key features and behaviors:** |
|||
|
|||
- Tracks real user activity (mouse movements, keyboard presses) across all tabs |
|||
- Works on a per-browser session basis - affects all tabs of the same session |
|||
- Maintains session if user is active in any tab of the application |
|||
- Provides a countdown timer before automatic sign-out |
|||
- Offers options to "Stay signed in" or "Sign out now" |
|||
|
|||
This feature significantly improves application security while maintaining a smooth user experience by preventing unexpected session expirations and data loss. |
|||
|
|||
### Lazy Expandable Feature for Documentation |
|||
|
|||
We've introduced a new lazy expandable feature to the documentation system that significantly improves navigation through large documentation sections. This enhancement addresses common challenges when dealing with extensive documentation hierarchies by introducing smart menu management. |
|||
|
|||
**Key benefits and features:** |
|||
|
|||
- **Cleaner Navigation:** The menu stays concise by hiding sub-items until they're needed, reducing visual clutter |
|||
- **Better Performance:** Reduces the initial load of the navigation tree by loading sub-items on demand |
|||
- **Improved Search Experience:** Makes filtering documentation items more efficient by showing only relevant top-level items |
|||
- **Context-Aware Expansion:** Automatically expands relevant sections when viewing specific documentation pages |
|||
|
|||
The feature works by marking certain documentation sections as "lazy expandable" in the navigation configuration. When users navigate to a document within a lazy expandable section, the system automatically expands the relevant menu items while keeping other sections collapsed. |
|||
|
|||
This improvement is particularly valuable for complex documentation areas like tutorials, solution templates, and extensive module documentation, where having all navigation items visible at once could be overwhelming. |
|||
|
|||
An example of lazy expandable feature from the [ABP's BookStore Tutorial](https://abp.io/docs/latest/tutorials/book-store/part-01): |
|||
|
|||
```json |
|||
{ |
|||
"text": "Book Store Application", |
|||
"isLazyExpandable": true, |
|||
"path": "tutorials/book-store", |
|||
"items": [ |
|||
{ |
|||
"text": "Overview", |
|||
"path": "tutorials/book-store", |
|||
"isIndex": true |
|||
}, |
|||
//other items... |
|||
] |
|||
} |
|||
``` |
|||
|
|||
 |
|||
|
|||
### Others |
|||
|
|||
Some other highlights from this release: |
|||
|
|||
* Updated Iyzico NuGet packages to the latest version, which is used in the [ABP's Payment Module](https://abp.io/docs/latest/modules/payment#payment-module-pro). |
|||
* Removed optional _secondaryIds_ from path. See: [#21307](https://github.com/abpframework/abp/pull/21307) |
|||
* [CMS Kit Pro](https://abp.io/docs/latest/modules/cms-kit-pro): Added automatic deletion of comments when a blog post is deleted - comments are now automatically removed when their associated blog post is deleted. |
|||
* Avoiding global blocking in distributed event handlers (See [#21716](https://github.com/abpframework/abp/pull/21716)). |
|||
|
|||
## Community News |
|||
|
|||
### New ABP Community Articles |
|||
|
|||
There are exciting articles contributed by the ABP community as always. I will highlight some of them here: |
|||
|
|||
* [Integrating ABP Modules in Your ASP.NET Core Web API Project. A Step-by-Step Guide](https://abp.io/community/articles/integrating-abp-modules-in-your-asp.net-core-web-api-project.-a-stepbystep-guide-jtbyosnr) by [Sajankumar Vijayan](https://abp.io/community/members/connect) |
|||
* [ABP Framework: Background Jobs vs Background Workers](https://abp.io/community/articles/abp-framework-background-jobs-vs-background-workers-when-to-use-which-t98pzjv6) — When to Use Which? by [Alper Ebiçoğlu](https://twitter.com/alperebicoglu) |
|||
* [The new Unit Test structure in ABP application](https://abp.io/community/articles/the-new-unit-test-structure-in-abp-application-4vvvp2oy) by [Liming Ma](https://github.com/maliming) |
|||
* [How to Use OpenAI API with ABP Framework](https://abp.io/community/articles/how-to-use-openai-api-with-abp-framework-rsfvihla) by [Berkan Şaşmaz](https://github.com/berkansasmaz) |
|||
|
|||
Thanks to the ABP Community for all the content they have published. You can also [post your ABP-related (text or video) content](https://abp.io/community/posts/create) to the ABP Community. |
|||
|
|||
## Conclusion |
|||
|
|||
This version comes with some new features and a lot of enhancements to the existing features. You can see the [Road Map](https://abp.io/docs/9.1/release-info/road-map) documentation to learn about the release schedule and planned features for the next releases. Please try ABP v9.1 RC and provide feedback to help us release a more stable version. |
|||
|
|||
Thanks for being a part of this community! |
|||
|
After Width: | Height: | Size: 482 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 34 KiB |
@ -0,0 +1,46 @@ |
|||
# ABP Studio Now Supports MacOS Intel 🚀 |
|||
|
|||
We are excited to announce that [ABP Studio, our cross-platform desktop application for ABP developers](https://abp.io/studio), now supports Intel-based Mac computers! |
|||
|
|||
This addition expands our platform compatibility, ensuring that developers using Intel-powered Macs can also benefit from the powerful features of ABP Studio. |
|||
|
|||
## What is ABP Studio? |
|||
|
|||
For those who aren't familiar, [ABP Studio](https://abp.io/studio) is a powerful desktop application that makes ABP development faster and easier. It offers: |
|||
|
|||
* Easy creation of new solutions (from simple applications to microservices) |
|||
* Visual architecture management for modular-monolith and microservice solutions |
|||
* Solution exploration tools for entities, services, and HTTP APIs |
|||
* Simplified running, debugging and monitoring of multi-application or microservice solutions |
|||
* Kubernetes cluster integration capabilities |
|||
* and more... |
|||
|
|||
## Extended Platform Support |
|||
|
|||
ABP Studio has been proudly supporting multiple platforms, and we're excited to add MacOS Intel to the our list of supported architectures. You can now use ABP Studio on: |
|||
|
|||
* Windows x64 |
|||
* Windows ARM |
|||
* MacOS Apple Silicon (M1/M2/M3) |
|||
* MacOS Intel **(New!)** |
|||
|
|||
## Why This Matters |
|||
|
|||
This update is particularly important for developers who are using Intel-based Mac computers. Previously, ABP Studio was only available for Apple Silicon Macs (for MacOS), but we understand that many developers are still using Intel-based Macs. With this release, we're ensuring that all Mac users can access our development tools, regardless of their processor architecture. |
|||
|
|||
## Getting Started |
|||
|
|||
Installing ABP Studio on your Intel-based Mac is straightforward: |
|||
|
|||
1. Go to [abp.io/studio](https://abp.io/studio) |
|||
2. Click on the download button and select "MacOS Intel" from the dropdown menu |
|||
3. Once downloaded, open the installer package |
|||
4. Follow the installation wizard to complete the setup |
|||
|
|||
 |
|||
|
|||
## Conclusion |
|||
|
|||
As ABP team, we're always looking for ways to improve the developer experience. By supporting Intel-based Macs, we're ensuring that all Mac users can access our development tools, regardless of their processor architecture. |
|||
|
|||
Stay tuned for more updates and enhancements as we continue to optimize ABP Studio and please provide us with your invaluable feedback. Thanks in advance! |
|||
|
After Width: | Height: | Size: 265 KiB |
|
After Width: | Height: | Size: 466 KiB |
@ -0,0 +1,82 @@ |
|||
# ABP.IO Platform 9.1 Final Has Been Released! |
|||
|
|||
We are glad to announce that [ABP](https://abp.io/) 9.1 stable version has been released today. |
|||
|
|||
## What's New With Version 9.1? |
|||
|
|||
All the new features were explained in detail in the [9.1 RC Announcement Post](https://abp.io/community/articles/abp-platform-9.1-rc-has-been-released-wws5l00k), so there is no need to review them again. You can check it out for more details. |
|||
|
|||
## Getting Started with 9.1 |
|||
|
|||
### Creating New Solutions |
|||
|
|||
You can check the [Get Started page](https://abp.io/get-started) to see how to get started with ABP. You can either download [ABP Studio](https://abp.io/get-started#abp-studio-tab) (**recommended**, if you prefer a user-friendly GUI application - desktop application) or use the [ABP CLI](https://abp.io/docs/latest/cli) to create new solutions. |
|||
|
|||
By default, ABP Studio uses stable versions to create solutions. Therefore, it will be creating the solution with the latest stable version, which is v9.1 for now, so you don't need to specify the version. |
|||
|
|||
### How to Upgrade an Existing Solution |
|||
|
|||
You can upgrade your existing solutions with either ABP Studio or ABP CLI. In the following sections, both approaches are explained: |
|||
|
|||
### Upgrading via ABP Studio |
|||
|
|||
If you are already using the ABP Studio, you can upgrade it to the latest version to align it with ABP v9.1. ABP Studio periodically checks for updates in the background, and when a new version of ABP Studio is available, you will be notified through a modal. Then, you can update it by confirming the opened modal. See [the documentation](https://abp.io/docs/latest/studio/installation#upgrading) for more info. |
|||
|
|||
After upgrading the ABP Studio, then you can open your solution in the application, and simply click the **Upgrade ABP Packages** action button to instantly upgrade your solution: |
|||
|
|||
 |
|||
|
|||
### Upgrading via ABP CLI |
|||
|
|||
Alternatively, you can upgrade your existing solution via ABP CLI. First, you need to install the ABP CLI or upgrade it to the latest version. |
|||
|
|||
If you haven't installed it yet, you can run the following command: |
|||
|
|||
```bash |
|||
dotnet tool install -g Volo.Abp.Studio.Cli |
|||
``` |
|||
|
|||
Or to update the existing CLI, you can run the following command: |
|||
|
|||
```bash |
|||
dotnet tool update -g Volo.Abp.Studio.Cli |
|||
``` |
|||
|
|||
After installing/updating the ABP CLI, you can use the [`update` command](https://abp.io/docs/latest/CLI#update) to update all the ABP related NuGet and NPM packages in your solution as follows: |
|||
|
|||
```bash |
|||
abp update |
|||
``` |
|||
|
|||
You can run this command in the root folder of your solution to update all ABP related packages. |
|||
|
|||
## Migration Guides |
|||
|
|||
There are a few breaking changes in this version that may affect your application. Please read the migration guide carefully, if you are upgrading from v9.0: [ABP Version 9.1 Migration Guide](https://abp.io/docs/latest/release-info/migration-guides/abp-9-1) |
|||
|
|||
## Community News |
|||
|
|||
### New ABP Community Articles |
|||
|
|||
As always, exciting articles have been contributed by the ABP community. I will highlight some of them here: |
|||
|
|||
* [URL-Based Localization](https://abp.io/community/articles/urlbased-localization-3ivzinbb) by [Alper Ebiçoğlu](https://twitter.com/alperebicoglu) |
|||
* [Building a CRUD API with ABP Framework, ASP.NET Core, and PostgreSQL](https://abp.io/community/articles/building-a-crud-api-with-abp-framework-asp.net-core-and-postgresql-elrj0old) by [Berkan Şaşmaz](https://github.com/berkansasmaz) |
|||
* [Encryption and Decryption in ABP Framework](https://abp.io/community/articles/encryption-and-decryption-in-abp-framework-37uqhdwz) by [Liming Ma](https://github.com/maliming) |
|||
* [Migrate Your DB from the Web Application - Adding a DB Migration Controller](https://abp.io/community/articles/migrate-your-db-from-the-web-application-adding-a-db-migration-controller-in-abp-framework-x3u3uvk3) by [Alper Ebiçoğlu](https://twitter.com/alperebicoglu) |
|||
* [Containerization: Blazor WASM + JWT Web API => Docker](https://abp.io/community/articles/containerization-blazor-wasm-jwt-web-api-docker-i3eirlsf) by [Bart Van Hoey](https://abp.io/community/members/bartvanhoey) |
|||
* [Configuring Post-Logout Redirect URI in ABP Based Blazor Applications with OpenIddict](https://abp.io/community/articles/configuring-postlogout-redirect-uri-in-abp-based-blazor-applications-with-openiddict-1t84suxg) by [Engincan Veske](https://github.com/EngincanV) |
|||
|
|||
Thanks to the ABP Community for all the content they have published. You can also [post your ABP related (text or video) content](https://abp.io/community/posts/create) to the ABP Community. |
|||
|
|||
### ABP Community Talks 2025.2: Real World Problems and Solutions with AI |
|||
|
|||
 |
|||
|
|||
In this episode of ABP Community Talks (2025.2), Decision Tree joined us to explore how AI is being leveraged to solve real-world problems, showcasing a practical use case of AI applications. |
|||
|
|||
> You can re-watch the talk from [here](https://www.youtube.com/watch?v=CXpWjxCIY_E). |
|||
|
|||
## About the Next Version |
|||
|
|||
The next feature version will be 9.2. You can follow the [release planning here](https://github.com/abpframework/abp/milestones). Please [submit an issue](https://github.com/abpframework/abp/issues/new) if you have any problems with this version. |
|||
|
After Width: | Height: | Size: 242 KiB |
|
After Width: | Height: | Size: 482 KiB |
|
After Width: | Height: | Size: 34 KiB |