Table of Contents
- Abstract
- What Changed
- Our WinForms & WPF NuGet packages now include both .NET Framework and .NET Core assemblies
- A single NuGet package source now supplies both .NET Framework and .NET Core Desktop assemblies
- Unified Component Installer now includes assemblies, source code, and tools for .NET Core Desktop development
- Side-by-side installation: Unified Component Installer and .NET Core Desktop Product Installer
- Template Gallery: You can better distinguish between desktop and web templates
- Template Gallery: The new .NET Core tab has been added
- Reasons for Change
- See Also
Abstract
DevExpress v21.1 uses a single Unified Component Installer for all .NET Framework and .NET Core controls. The same applies to NuGet packages – a single package now contains controls for both frameworks. This change eliminates the need for a separate .NET Core Desktop Product Installer and separate NuGet packages if you use .NET Core Desktop controls.
These changes do NOT mean that DevExpress .NET Core/.NET 5+ libraries use an API from .NET Framework and vice versa. This also will NOT increase the size of your deployed apps because .NET will take only required assemblies from NuGet packages (based on what you set as a Target Framework for your end app).
NOTE: Think of a NuGet package as of a logical grouping or a file folder. It is a standard practice for NuGet packages to include assemblies for multiple target platforms (for instance, a popular https://www.nuget.org/packages/Newtonsoft.Json/ package includes assemblies for 7 target platforms). Developers should not worry about this because only required assemblies will be used in their end apps.
Applies To
- DevExpress WinForms, WPF and XAF developers who expect to build .NET Core desktop apps in our v21.1+ release cycle.
- DevExpress WPF developers who expect to build .NET Framework desktop apps and use WPF controls via NuGet (not via assembly references) in our v21.1+ release cycle.
No Action Is Required If
- You build .NET Framework WinForms or web apps (ASP.NET MVC or Web Forms or HTML/JavaScript).
- You build .NET Core web apps (ASP.NET Core MVC or Blazor).
- You build .NET Framework WPF apps and use DevExpress WPF controls via assembly references (not via NuGet).
- You build .NET Core WinForms and WPF apps using DevExpress technologies, but do not expect to upgrade to v21.1+.
You may skip the rest of this notice. If you decide to use our desktop controls v21.1 or higher in future applications, your installation experience will be simple and straightforward.
Impact on Existing Apps That Use .NET Framework WPF Controls via NuGet
If you reference .NET Framework WPF controls via NuGet (not via assembly references), check the following upgrade instructions:
The structure of .NET Framework packages has been changed to provide packages per product.
Impact on Existing Apps That Use .NET Core WinForms and WPF Controls via NuGet
If you do use .NET Core Desktop assemblies (WPF, WinForms or XAF) and decide to upgrade to DevExpress v21.1 or higher, you need to apply changes to your project. Use the Project Converter to update *.WindowsDesktop.* packages in your apps. Review the following update options that depend on how you obtained our libraries.
- Unified Component Installer
- .NET Core Desktop Product Installer
- Personal Online NuGet Feed (No Installers)
Run the Project Converter tool from one of the following locations:
- c:\Program Files (x86)\DevExpress 21.1\Components\Tools\Components\ProjectConverter.exe
- Visual Studio menu: Extensions | DevExpress | Project Converter | Project Converter v21.1+.
NOTE: You may have specified .NET Core Desktop 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.
What Changed
Our WinForms & WPF NuGet packages now include both .NET Framework and .NET Core assemblies
DevExpress v21.1 NuGet packages include libraries for both .NET Framework and .NET Core Desktop target frameworks (platforms="net452;netcoreapp3.0" or platforms="net452;net5.0-windows" for XAF). You no longer need to install separate NuGet packages for .NET Core Desktop development.
Consider the content of a typical v21.1 NuGet package for desktop development (DevExpress.Win.Navigation):
For example, compare references in the same demo project compiled for two different versions: v20.2 and v21.1. You’ll see that *.WindowsDesktop.* NuGet packages no longer appear in the list:
A single NuGet package source now supplies both .NET Framework and .NET Core Desktop assemblies
We removed the following offline/local NuGet package source: DevExpress 21.1 .NET Core Desktop Local. All our installers now create a single package source: DevExpress 21.1 Local.
NOTE: You can use a personal online NuGet feed instead.
Unified Component Installer now includes assemblies, source code, and tools for .NET Core Desktop development
Navigate to the following folders and browse their sub-directories to locate the required assets:
- Binaries, tools, and sources for all frameworks: c:\Program Files (x86)\DevExpress 21.1\Components
- .NET Core Desktop demos: c:\Users\Public\Documents\DevExpress Demos 21.1\Components
Side-by-side installation: Unified Component Installer and .NET Core Desktop Product Installer
If you develop for v21.1 or higher, we recommend that you uninstall our .NET Core Desktop Product Installer and only use the Unified Component Installer going forward. Review the following lists for valid and invalid installer combinations:
You can install the two installer types side-by-side if they target different major versions.
- Unified Component Installer v20.2 and .NET Core Product Installer v21.1.
- Unified Component Installer v21.1 and .NET Core Product Installer v20.2.
Unified Component Installer and .NET Core Desktop Product Installer cannot be installed side-by-side for the same major version (v21.1 and higher). The following examples show how our installers respond if it finds another one already installed.
- .NET Core Product Installer v21.1 and then Unified Component Installer v21.1.
- Unified Component Installer v21.2 and then .NET Core Product Installer v21.2.
Template Gallery
You can better distinguish between desktop and web templates
The former DevExpress Template Gallery project template has been split into multiple templates:
The new .NET Core tab has been added inside the Template Gallery
Reasons for Change
We always wanted to ship our controls as part of a single unified installer. If you use NuGet, we wanted a single package per product, regardless of the target framework. The transition period with two installers and dual NuGet packages was necessary while .NET Core 3.1 / .NET Core 5 were in early development stages. The benefits of single-source installation are as follows:
- Simpler installation experience.
- Easier support and maintenance on our side.
- Possibility to share Class Libraries with .NET Standard dependencies and cross-platform APIs across different Target Frameworks. Say you develop WinForms or WPF reusable modules for .NET Core Desktop and .NET Framework apps. You no longer need to use multi-targeting and reference the same physical library twice. You would reference DevExpress.WindowsDesktop.Data package for .NET Core Desktop and DevExpress.Data package for .NET Framework (example).
- Improved design-time experience for .NET Core Desktop users. They can now use the Template Gallery and the DevExpress Menu already available to .NET Framework users.
See Also
- XAF: Core - XAF's Blazor and WinForms (.NET Core) assemblies target .NET 5
- WPF: The structure of .NET Framework packages has been changed to provide packages per product | The structure of .NET Core packages has been changed to provide packages per product
- WinForms: Design-Time Support for .NET Core DevExpress WinForms Controls - FAQ