Skip to content
Choose a tag to compare

CSLA 6 is a major new version of CSLA .NET, fully supporting (and requiring) dependency injection and other features of modern .NET.

Version 6.0.0 includes numerous breaking changes, including:

  • Business domain types must have a public constructor
  • Public constructors for many types will have parameters provided via depedency injection
  • Support for .NET 4.0 and 4.5 has been dropped; .NET 4.6.2 is the minimum required
  • The data and object context managers in Csla.Data have been removed in favor of using dependency injection

This version supports:

  • .NET 6
  • .NET Framework 4.6.2 to 4.8
  • netstandard 2.0 and 2.1
  • Blazor
  • Xamarin
  • mono

Operating Systems and Platforms:

  • Windows (servers and UWP, WPF, Windows Forms)
  • Linux (servers and Xamarin)
  • iOS and Android (Xamarin)
  • Mac (servers and Xamarin)
  • Kubernetes and other container-based runtimes
  • ASP.NET Core and ASP.NET 5
  • Other client and server environments where .NET Core or mono are available

Change List

Upgrade documentation

There is a document describing common issues people will likely encounter when upgrading from CSLA 5 to CSLA 6.


The CSLA community is fantastic! The people who've submitted bugs, helped think through solutions, lobbied for features and enhancements, and submitted pull requests are listed below.


Thank you all so much for your support!

Choose a tag to compare

Version 5.5.3 contains bug fixes over v5.5.2.

Here is a list of all changes.


  • Backport feature to run all business rules on server-side data portal (optional)
  • Fix long-standing issue with System.Runtime.Loader dependency
  • Implement no-param fallback for UpdateChild data portal operation

Many thanks to:

Choose a tag to compare
Choose a tag to compare
Choose a tag to compare

Enhancements and Bug fixes over the 5.4.2 release.

Changes in this release

  • #2095 🎉 Add support for unloading assemblies from memory (re: caching)
  • #2377 🐜 Add missing LoadListMode implementation for some list types
  • #2347 🐜 Remove Console.WriteLine statement in Blazor ViewModel
  • #2302 🐜 n-level undo causing exception with SortedBindingList
  • #2287 🐜 Private data portal method not found from base classes
  • #2303 🐜 [DeleteSelfChild] cannot be parameterless; requires parameters that match DataPortal.UpdateChild(...)


Choose a tag to compare

Bug fixes over the 5.4.1 release.

Change List

Changes in this release

  • #2161 🐜 Fix Blazor WebAssembly loses ApplicationContext values
  • #2109 🐜 Fix AmbiguousMatchException DataPortal.Fetch
  • #2075 🐜 HttpProxy compression code doesn't work with custom HttpClient


Choose a tag to compare
Choose a tag to compare

The 5.4.0 release of CSLA .NET adds support for .NET 5 across all supported scenarios, including:

  • Blazor
  • aspnetcore
  • Windows Forms
  • WPF

The release notes doc contains more details.

Change List

Changes in this release


Choose a tag to compare

I am pleased to announce the release of CSLA .NET version 4.11.2.

This is a bug fix release from 4.11.1.

  • #1212 Fix issue with n-level undo and cloning

CSLA .NET version 4.11.1 Release Notes

I am pleased to announce the release of CSLA .NET version 4.11.1.

This is a bug fix release from 4.11.0.

  • #1138 Backport fix for TransactionTypes enum issue

CSLA .NET version 4.11.0 Release Notes

I am pleased to announce the release of CSLA .NET version 4.11.0.

This is an enhancement and bug fix release from 4.10.1.

  • #1164 Fix issue where LocalProxy would lock a Windows Forms app using async data portal calls
  • #1167 Add UpdateAllChildren method to FieldManager to simplify saving all child objects regardless of their IsDirty value

CSLA .NET version 4.10.1 Release Notes

I am pleased to announce the release of CSLA .NET version 4.10.1.

This is a bug fix release from 4.10.0.

  • #1130 Backport SimpleDataPortal async mismatch check fix #1117 and fix for explicit null default values for string properties to version 4.x #1103
  • #1155 Backport fix for Blazor scenario with HttpProxy to autoflush text writer

CSLA .NET version 4.10.0 Release Notes

I am pleased to announce the release of CSLA .NET version 4.10.0.

This is a bug fix release from 4.9.0.

  • #1084 Backport sync context changes from v5.0

CSLA .NET version 4.9.0 Release Notes

The major enhancements are described in some detail in a CSLA .NET 4.9.0 blog post.

Dependabot and NuGet dependencies

We've started using Dependabot to help keep NuGet dependencies current. As a result, the following updates are included in this release:

  • Bump Microsoft.AspNet.Razor from 2.0.20710 to 2.0.30506 in /Source
  • Bump Microsoft.EntityFrameworkCore from 2.1.4 to 2.2.0 in /Source
  • Bump System.Data.SqlClient from 4.5.1 to 4.6.0 in /Source
  • Bump Xamarin.Forms from to in /Source
  • Bump Microsoft.EntityFrameworkCore from 2.0.2 to 2.1.4 in /Source
  • Bump System.Security.Principal.Windows from 4.5.0 to 4.5.1 in /Source
  • Bump System.Data.SqlClient from 4.4.3 to 4.5.1 in /Source
  • Bump Microsoft.AspNetCore from 2.0.2 to 2.1.6 in /Source
  • Bump Microsoft.AspNet.WebPages from 2.0.20710 to 3.2.7 in /Source
  • Bump System.ComponentModel.Annotations from 4.4.1 to 4.5.0 in /Source
  • [Security] Bump Microsoft.NETCore.UniversalWindowsPlatform

Docs and wiki

We've updated some of the docs and officially removed the wiki. All the wiki/docs content is now in the /docs directory.

Data portal enhancements

  • #993 Implement SaveAndMergeAsync methods
  • #972 Implement data portal router
  • #959 Enhance data portal to use different endpoint per business type
  • #961 Create data portal health/instrumentation endpoint
  • #1011 Implement IsOffline property for data portal
  • #982 Add new IDataPortalFactory singleton for page injection in ASP.NET Core

Configuration enhancements

  • #966 Add fluent config types to CSLA: Csla.Configuration.CslaConfiguration
  • #967 Read CSLA config values from .NET Core config subsystem: CslaConfigurationOptions
  • #1012 Implement ConfigureCsla extension method to IConfiguration for use in .NET Core configuration
  • #982 Implement AddCsla method for use in ASP.NET Core ConfigureServices

Bug fixes

  • #949 [samples] Fix WinForms and WPF DataPortal configuration to use Azure
  • #956 [bug] Check for null User in authz rules
  • #962 [bug] Object not serializable (Csla.Core.ContextDictionary) after compiled with .Net Native tool chain and Optimize Code Enabled

You can see all the closed work items in GitHub.

Choose a tag to compare

I am pleased to announce the release of CSLA .NET version 4.8.1.

🛑 This is a big change, because I was able to eliminate the CSLA-Core-NS package. If you are using the CSLA-Core-NS package you will need to remove that reference and add a reference to the CSLA-Core package.

If you have any custom rules (subclass of BusinessRule or implement IBusinessRule you will need to update all Execute methods to accept an IRuleContext parameter instead of a RuleContext parameter.

There are a number of other changes and bug fixes including:

From 4.8.1:

  • #946 Fix NullReferenceException in DataPortalException.BusinessException

From 4.8.0:

  • #927 Eliminate CSLA-Core-NS package 🛑
  • #703 Allow use of BinaryFormatter in .NET Standard 2.0 and .NET Core
  • #344 Stop caching DisplayName value so localization works as expected
  • #344 Ensure string properties default to String.Empty not null
  • #827 Eliminate NullReferenceException in Rule.Complete
  • #340 Enable per-type authz rules when passing interface types to the data portal
  • #917 Fix issue with non-default timeout in HttpProxy
  • #635 Move wiki to the /docs directory so it is part of the repo
  • #650 Better exception when incorrect CslaDataPortalProxy is specified
  • #938 Simplify version numbering so we can start using semver
  • #914 WARNING 0xdef01051 No default or neutral resource given for UWP

You can see all the closed work items in GitHub.

💡 After this release I'll start officially using the semver (semantic versioning) concept, so breaking changes will be more clearly noted via version changes. In this release I've started that process by using a .0 instead of .100 for the patch number.