.Net Core support for ASP.NET Boilerplate and ASP.NET Zero

.Net Core support for ASP.NET Boilerplate and ASP.NET Zero

After a heavy work on ASP.NET Boilerplate and ASP.NET Zero projects, we are very happy to announce that both projects supports .net core now!

ASP.NET Boilerplate v2.0.0

ABP 2.0 supports both .netstandard 1.6 and .netframework 4.6. That means it’s a cross-platform framework from now on.

Entity Framework Core Integration

Entity Framework Core integration is now completed. Previously there were two important missing points: Automatic data filtering and DateTime Kind normalization (see this post for details). We handled automatic data filtering in the repository level, without depending any 3rd-party library. It’s limited to repositories, so it does not work when you work with navigation properties or when you direcly work with DbContext or SQL.

Abp.ZeroCore packages

Abp.Zero depends on ASP.NET Identity, which is not cross platform (does not support .net core). So, we introduced a new re-write of Abp.Zero as Abp.ZeroCore which depends on ASP.NET Core Identity and Entity Framework Core.

We will change module zero core template to use these new packages and be a cross platform startup template.

Hangfire ASP.NET Core Integration

Created a new package, Abp.HangFire.AspNetCore, to direcly integrate to Hangfire.AspNetCore package which uses ASP.NET Core’s middlewares.

Abp.MailKit Package

.net core (and .net standard) does not support old SmtpClient class to simply send emails. So, we have created a new package, Abp.MailKit, that implements ABP’s IEmailSender and sends emails via MailKit. Microsoft also will support MailKit and will not introduce SmtpClient in .netstandard.

Castle Windsor Integration

ABP depends on Castle Windsor for dependency injection. But it does not support .netstandard/.netcore yet. To overcome this problem, we are now conditionally depending on Fortress.Windsor package, which is a .netstandard port of Castle Windsor. We also contributed to the creation and testing of this new library. Thank you @fir3pho3nixx for your hard work!

Breaking Changes

We haven’t introduce major breaking changes (there are a few minor breaking changes). But if you want to move to .net core, it’s another story. It may require significiant changes on your code since .net core does not support all APIs of .net framework.

See all changes in v2.0.0: https://github.com/aspnetboilerplate/aspnetboilerplate/milestone/78?closed=1

AspNet Zero v4.0.0

We worked on our AspNet Zero product in parallel to ABP works. Thus, we have better tested .net core support.

AspNet Zero has now a cross platform base solution to create modern web applications. It has significiant changes in the code base.

ASP.NET Core Identity & Entity Framework Core

Moved from Identity to Core Identity and from Entity Framework 6.x to Entity Framework Core as an essential change because old ones don’t support .net core (and will not support ever).

SignalR, Chat and Real Time Notifications

Microsoft has not finished the work on SignalR to support .net core yet. So, if you want to use .net core, you will not be able to use SignalR and related features of AspNet Zero. Fortunately, AspNet Zero can also work on .net framework 4.6.1. If you select .net framework 4.6.1, then chat and other real time features will work as expected. We have designed AspNet Zero to support both frameworks in single solution and allow you to choose your framework on project creation. And also you can then change to other one by simply changing target framework of the project.

If you don’t need to cross platform support, you can continue to work on full .net framework 4.6.1 and take advantage of all features.

Angular 4+

We are constantly updating our dependencies. Latest AspNet Zero is based on latest ASP.NET Core and Angular 4 frameworks. As you know AspNet Zero has also an MVC version which is not SPA and does not use Angular as well.


In latest release, we included build script and docker files to automatically publish your project as docker images. Then you can use docker-compose to run your project in docker containers. While it’s configured of the box, we will create a tutorial for it to show different configurations and details for Docker usage.

Future of ABP and AspNet Zero

We have spend so much time to only adapt changes in the software development tools: Porting to ASP.NET Core, Entity Framework Core, Angular 2/4… and so on. From now, we hope to more focus on features rather than technology stack changes. In addition, our team is getting bigger. We are now 4 full-time developers just working on the ABP and AspNet Zero projects, and the count is increasing.

  • Ibrahim Hammad
    Posted at 13:03, April 24, 2017

    I want really to thank you for your hard work and commitment to open source. We are benefiting a lot from AbpBoilerplate.

  • RB
    Posted at 17:42, April 24, 2017

    Abp.MailKit paclage => Abp.MailKit package

  • Qasim Mohammed
    Posted at 00:46, April 25, 2017

    Creative, awesome , great, flexible ,…& powerful Framework
    I,m really fall in love with ABP framework
    Thank you very much Mr. Halil.
    Wish you all the best

  • Ramon Gutierrez
    Posted at 19:27, April 25, 2017

    Excellent guys. I bow my head to your work. I really love ABP and all the hard work you do. Keep it going.

  • Francesco Capaldi
    Posted at 19:45, April 26, 2017

    Great work! Well done! 😉

  • Posted at 09:04, April 29, 2017

    This revived my interest and confidence in your product. Great work and congratulations! I am putting this through its paces on macOS and various other dataproviders than SqlServer – will share my results with this community. So cross-compatible development is a charm and it more than makes up for whatever is still lacking on dotnet core… More power to you.

    Regards, P

  • trendline
    Posted at 09:32, April 30, 2017

    What is the scenarios that customized data filter does not work with navigation properties or direcly work with DbContext ?
    Is there some descriptions?

      • trendline
        Posted at 06:08, May 2, 2017

        How to avoid this happen, especially the navigation property, if multi-tenancy enabled, in a tenant when query Person then get Phone navigation collections, is that will get data from other tenant? Especially using separated Database.

        Is there some sample code to demonstrate this?

          • trendline
            Posted at 11:41, May 3, 2017

            I have a little confuses that you said navigation property cannot be filtered.
            Could you show me some scenarios?

  • killerbake
    Posted at 07:21, May 3, 2017

    What a great read and I’m happy to see the active development. It’s really nice to see your team support the latest tech so we can have a system that just works with all the latest releases.

    I’ll be getting a license soon just because of the hard work you guys put into this.

  • Posted at 12:28, August 24, 2017

    Thanks Halil and Ismail for giving us Asp.net boilerplate and Asp.net zero.
    We started suggesting different clients these solutions 2 years ago. Now it is very easy for us to grow only in one stack.
    We started with Asp.net MVC and now we are working on Angular 4.
    Thanks for trusting us and sending clients our way.
    Our clients are referring their friends to us and asking us to give them customized solution using Asp.net zero.
    We also like you started with 1 developer and now have 4 developers working only on Asp.net boilerplate and Asp.net Zero/Microsoft solutions.
    Looking forward to your non-monolithic architecture. Keep it up.

Post a Comment