Overview

.NET Framework 4.8 and .NET are both supported with OpenEdge on Windows. See the OpenEdge 13 Platform Compatibility Guide for information on the .NET versions supported.

With .NET, developers and software architects can take advantage of newer .NET libraries and new platform features, such as user interface improvements for .NET-based controls. .NET also provides significant performance improvements over .NET Framework. .NET Framework 4.8 was released by Microsoft as the final version. Microsoft will continue to support it, but it will not receive any new features. Upgrading to .NET allows you to move your application forward into the future.

OpenEdge applications that use .NET Framework continue to work without any changes. However, you may wish to migrate your application to the newer version to take advantage of all the features that .NET has to offer.

The general steps to use .NET with OpenEdge are:
  1. Install the .NET runtime
  2. Add the -clrnetcore startup parameter
  3. Replace .NET Framework specific libraries with .NET compatible libraries, if required
  4. Recompile your r-code

Installation requirements

OpenEdge does not ship with a .NET installer. To use .NET with OpenEdge, you must install a .NET runtime on each machine where OpenEdge is installed. .NET installation files are available at https://dotnet.microsoft.com/en-us/. OpenEdge requires the .NET Desktop Runtime, which includes the base .NET Runtime and the WinForms libraries among others. Alternatively, you can install the .NET SDK.

OpenEdge supports .NET on both 64-bit and 32-bit installations of OpenEdge. Be sure to download and install the package that matches your OpenEdge installation.

Note: Both .NET Framework and .NET may be installed at the same time. You may also install multiple versions of the .NET runtime. The .NET installation files are placed in C:\Program Files\dotnet or C:\Program Files (x86)\dotnet. OpenEdge is configured to select the highest version from among the available installations of .NET.

Startup parameters

The .NET Common Language Runtime (-clrnetcore) startup parameter tells the AVM to load and use the .NET runtime instead of the .NET Framework runtime.
-clrnetcore

-clrnetcore takes no arguments. If -clrnetcore is not specified, the AVM loads .NET Framework. -clrnetcore works with PROWIN (64-bit GUI client), PROWIN32 (32-bit GUI client), _progress (character client), Progress Application Server agent, and WebClient.

Note: You cannot use both the .NET and .NET Framework runtimes in the same session. Only one runtime can be used at a time.
The following simple program displays the .NET runtime version used by OpenEdge. You can run the program from the OpenEdge client using either .NET Framework or .NET to see the difference in behavior.
VAR CHARACTER envver = System.Environment:Version:ToString().

MESSAGE ".NET version is" envver VIEW-AS ALERT-BOX.

You may also use the Preload CLR (-preloadCLR) and Assemblies (-assemblies) startup parameters. These parameters work with .NET, behaving the same as they did in earlier releases.

Install .NET compatible libraries

You may need to acquire new libraries compatible with .NET in order for your application to work. Once acquired, place them into the assemblies directory and update the assemblies.xml file. By default, these files are expected to be in the current working directory of the ABL session. However, you can change this location by using the Assemblies (-assemblies) startup parameter. All incompatible .NET Framework-specific assembly references should be removed. For more information, see the section on "Acquiring assemblies for your application" in Changes and limitations with .NET on Windows.

Recompile your r-code

Many .NET assemblies have APIs that are compatible with .NET Framework. However, your application may use some that are not. You can recompile your application, and in the process, address any API incompatibilities. When moving from .NET Framework to .NET, some libraries may have breaking changes. Review the compatibility documentation from Microsoft for the core set of libraries at https://learn.microsoft.com/en-us/dotnet/core/compatibility/library-change-rules. These changes may require updates to your ABL source code. You should review the list to determine if any impact your application or the .NET libraries used by your application. These lists cover the Microsoft supplied "core" set of assemblies. If you have third-party .NET Framework libraries, see the vendor’s documentation for compatibility with .NET.