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
Recommended (for .NET Framework and .NET Core/.NET 5+ 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.