Breaking Change T984618
Visible to All Users

.NET Core Desktop Development (WPF & WinForms): Changes in Installation and NuGet Package Content

Table of Contents


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.

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+.

Clipboard-File-1.png

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):

Clipboard-File-22.png

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:
Clipboard-File-15.png

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.

Clipboard-File-3.png

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

Clipboard-File-21.png

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:

Valid 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.
Invalid combinations

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. Clipboard-File-21.png
  • Unified Component Installer v21.2 and then .NET Core Product Installer v21.2. Clipboard-File-20.png

You can better distinguish between desktop and web templates

The former DevExpress Template Gallery project template has been split into multiple templates:
Clipboard-File-18.png

Clipboard-File-19.png

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

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.