Breaking Change T1025472
Visible to All Users

Core - Base XPO and EF6 NuGet packages and assemblies have been renamed or removed

What Changed

We renamed the following NuGet packages and assemblies:

v21.2 and later Previous versions
DevExpress.Persistent.BaseImpl.Xpo DevExpress.Persistent.BaseImpl
DevExpress.ExpressApp.CloneObject.Xpo DevExpress.ExpressApp.CloneObject
DevExpress.ExpressApp.AuditTrail.Xpo DevExpress.ExpressApp.AuditTrail
DevExpress.ExpressApp.EF6 DevExpress.ExpressApp.EF
DevExpress.ExpressApp.Security.EF6 DevExpress.ExpressApp.Security.EF
DevExpress.Persistent.BaseImpl.EF6 DevExpress.Persistent.BaseImpl.EF
DevExpress.Persistent.BaseImpl.EFCore DevExpress.Persistent.BaseImpl.EFCore.Legacy (removed)

We also renamed the localization packages associated with the packages above. For example:

v21.2 and later Previous versions
DevExpress.Persistent.BaseImpl.Xpo.es DevExpress.Persistent.BaseImpl.es

Reasons for Change

These changes are made for easier maintenance, clearer dependencies, and future code extension. For instance, this change helps make package discovery easier and avoid errors (for instance, mixing up EF6 and EF Core or EF Core and XPO packages).

Impact on Existing Apps

These changes will not affect the majority of XAF users, because all moved types retain their original namespaces. This change may affect your application if you are building a complex framework that relies on full assembly names (for instance, if you have Assembly.Load(fullDevExpressAssemblyName)).

How to Update Existing Apps

Run the Project Converter tool v21.2+ to automatically update NuGet package names.

NOTE: You may have specified package names in *.props or CI/CD configuration files (for instance, Directory.Build.props). In such rare cases, update these package references manually. Contact us if you require assistance.

Optional (for .NET Framework apps only)

1. In .NET Framework apps, the problem may occur when old business class libraries (like DevExpress.Persistent.BaseImpl) exist in the application folder or in GAC. By default, XPO tries to load them by the XPObjectType info along with the new versions. To update old XPO assembly names in the XPObjectType table automatically, implement a solution from XPO - Old business class assemblies may be loaded from the application folder or GAC and cause side effects in .NET Framework apps (due to outdated XPObjectType records)

NOTE: This update is NOT needed in .NET Core/.NET 5+ apps - the assembly discovery logic differs form the logic of .NET Framework apps.

2. In XAF Workflow (WWF) apps, update the activity XML files manually:

FROM: xmlns:dpb="clr-namespace:DevExpress.Persistent.BaseImpl;assembly=DevExpress.Persistent.BaseImpl.v21.1"
TO: xmlns:dpb="clr-namespace:DevExpress.Persistent.BaseImpl;assembly=DevExpress.Persistent.BaseImpl.Xpo.v21.2"
or modify the activity in the workflow designer (for instance, rename a variable) and re-save it.

Disclaimer: The information provided on DevExpress.com and affiliated web properties (including the DevExpress Support Center) is provided "as is" without warranty of any kind. Developer Express Inc disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.

Confidential Information: Developer Express Inc does not wish to receive, will not act to procure, nor will it solicit, confidential or proprietary materials and information from you through the DevExpress Support Center or its web properties. Any and all materials or information divulged during chats, email communications, online discussions, Support Center tickets, or made available to Developer Express Inc in any manner will be deemed NOT to be confidential by Developer Express Inc. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.