Upgrading an Orchard Core CMS Website Orchard Core CMS now runs on .NET Core 3.0 and ASP.NET Core 3.0

Upgraded My Orchard Core CMS Website to RC1!

Orchard Core CMS RC1 was recently released, and in addition to upgrading client websites, I upgraded my Orchard Core CMS website from beta 3 to RC1! This involved not only upgrading an Orchard Core setup recipe in the theme, but several custom Orchard Core modules. If you're an Orchard Core developer and haven't taken the plunge on upgrading to RC1 yet, you can expect a fair amount of manual effort 1) upgrading the website to support .NET Core 3.0 and ASP.NET Core 3.0, 2) upgrading the content definitions in your recipes, 3) modifying your custom modules to reference the newer versions of core modules, and 4) making small changes to your custom code based on changes to the underlying API. This should be the last of breaking changes, however, so I'm expecting the upgrade from Orchard Core RC1 to production to be much easier :)

.NET Core 3.0 and ASP.NET Core 3.0

First and foremost, Orchard Core RC1 now runs on .NET Core 3.0 and ASP.NET Core 3.0. You will need to install the .NET Core 3.0 SDK on your development machine as well as the runtime on your server. You'll also need to modify the website startup as there are changes for ASP.NET Core 3.0 and Orchard Core CMS RC1. And, of course, you'll need to upgrade all your custom Orchard Core Module and Theme project files to reflect the fact that Orchard Core now runs using .NET Core 3.0 and ASP.NET Core 3.0. It's not a lot of effort, but it does need to be done.

While you're upgrading the Orchard Core CMS Module and Theme project files to support .NET Core 3.0 and ASP.NET Core 3.0, you'll need to update the version numbers of all the core modules you reference in your custom themes and modules to the RC1 versions on Nuget. Once you do this and re-build your Orchard Core website, you will notice a number of errors indicating that indeed the API has changed for a few of the Orchard Core modules.

Orchard Core CMS Recipes

Now let's talk about recipes. I am a huge fan of Orchard Core recipes. The entire website can be built from scratch using a single setup recipe. The setup recipe activates and configures the theme and all custom modules; creates the blog and portfolio and their initial content; adds all the necessary images to the media library; and creates all the pages, contact form, and workflows associated with the entire Orchard Core website. I love the automation and peace of mind the setup recipe provides going forward!

However, when upgrading from Orchard Core beta 3 to RC1 there was a change to content part and content field settings that impacted the way content definitions are represented in recipes. I love and applaud the change and wonder why it wasn't always the case, but more importantly, this will require the Orchard Core developer to manually modify any existing Orchard Core recipes when upgrading to RC1. If you have very few content definitions in your recipes, it won't be a big deal. I have a fair amount so it took me a noticeable amount of time to complete the changes. Thankfully, I got it right the first time as there is no good way to automate testing of this.

Orchard Core CMS Custom Modules

In addition to an awesome setup recipe, the website has a handful of custom Orchard Core modules running on the website. I have mentioned a couple of them in my Orchard Core portfolio: Orchard Core Live Chat Module and Orchard Core Google Analytics Module. If you're an Orchard Core developer and have been maintaining a custom module throughout all the Orchard Core betas, you know that the core modules and their API's have continually evolved as the Orchard Core developer team attempts to consolidate and optimize the number of modules as well as improve the API's. This is the same for Orchard Core CMS RC1.

Great Experience

In all it took me about a day to make all the changes to upgrade the Orchard Core CMS website to RC1. Time well spent in my opinion as I learned a lot from upgrading the custom Orchard Core Themes, Modules, and Websites during the early beta and RC releases. I have become very familiar with the source code and architecture as well as proficient at maintaining and troubleshooting a website throughout several releases of Orchard Core. For those Orchard Core developers about to upgrade to RC1, I wish you the best of luck!