🚀 Welcome to MDriven Learn –  MDriven is now on Discord!  Don’t miss the latest Release Notes.
.NET Framework, .NET Core, and .NET 6+
This page was created by Wikiadmin on 2026-07-29. Last edited by Wikiadmin on 2026-07-29.

You can use this page to choose the correct MDriven NuGet packages when you target .NET Framework 4.7.2–4.8, .NET Core, or .NET 6 and later.

Target framework support

MDriven uses .NET Standard 2.0 assemblies for shared APIs. .NET Standard is a shared API format that lets the same library work with .NET Framework 4.8 and modern .NET targets such as .NET 6 and .NET 8.

For example, a shared EcoSpace library can reference MDriven.Interfaces.netStandard and be used by both a .NET Framework 4.8 application and a .NET 8 application.

Your application target Package rule Notes
.NET 6 or later Use only MDriven.* packages. Do not reference any old Eco* packages.
.NET Core Use the applicable MDriven.* packages. MDrivenServer is also published for .NET Core 3.1.
.NET Framework 4.7.2–4.8 Use the MDriven .NET Standard packages for handles, interfaces, and LINQ extender. Use selected old Eco packages for framework-specific assemblies. Framework-specific assemblies include WinForms, WPF, and MDriven.Net.Http dependencies supplied through EcoCore, EcoWinForms, and EcoWPF.

Use the current package names

MDriven 7.2 retires the old Eco.Handles, Eco.Interfaces, and Eco.LinqExtender assemblies. Update your application code, components, and plugins to use these packages instead:

Retired assembly Replacement package
Eco.Handles MDriven.Handles.netStandard
Eco.Interfaces MDriven.Interfaces.netStandard
Eco.LinqExtender MDriven.LinqExtender.netStandard

If you target .NET 6 or later, remove old Eco* package references. For example, replace a dependency on EcoCore used only to obtain interfaces with a reference to MDriven.Interfaces.netStandard.

Some assemblies also have newer .NET Standard packages. For example, use MDriven.Persistence.netStandard where it applies to your persistence setup.

Multi-target a shared project

You can compile one shared project for .NET Framework and modern .NET by setting TargetFrameworks in the project file. Put net472 first when the project contains a WinForms designer form: Visual Studio uses the first target for its in-process designer.

<PropertyGroup>
  <TargetFrameworks>net472;net8.0</TargetFrameworks>
</PropertyGroup>

This produces separate build outputs for each target. The EcoSpace code is compiled for each target; it is not one runtime assembly shared by both processes.

Update WinForms generated code

After the package change, the WinForms designer can report an error in generated code that uses IColumn. Change the column array type from Eco.Handles.IColumn to Eco.Handles.AbstractColumn.

// Old generated code
expressionHandle1.Columns.AddRange(
  new Eco.Handles.IColumn[] { oclColumn1, oclColumn2 });

// Required code
expressionHandle1.Columns.AddRange(
  new Eco.Handles.AbstractColumn[] { oclColumn1, oclColumn2 });

Configure asynchronous WPF handling

IAsyncSupportService no longer exposes DispatchTaskToMainThread. .NET Standard does not provide the WPF-only Dispatcher type. When you enable asynchronous handling in a WPF application, inject an equivalent platform dispatcher.

EcoServiceHelper.GetAsyncSupportService(_ecospace).TurnOnAsyncHandling();
EcoServiceHelper.GetAsyncSupportService(_ecospace)
  .InjectThePlatformDispatcherEqvivalent(
    new DispatcherSynchronizeInvoke(
      System.Windows.Threading.Dispatcher.CurrentDispatcher));

DispatcherSynchronizeInvoke is available in ECO.WPF for .NET Framework and MDriven.WPF.core for .NET 8.

Communication and transaction limits

For .NET 6 and later, PMapper communication uses Web API. WCF is no longer a supported PMapper communication channel.

Enterprise Services distributed transactions are not supported on .NET 6 and later.

Global Assembly Cache

The Global Assembly Cache (GAC) can take precedence over assemblies in your project output. This can cause debugging to load a different assembly version than the one you built.

MDriven's .NET 8 direction removes reliance on the GAC. Do not place new MDriven assemblies in the GAC. MDriven transfers handle data by serialization between the .NET Framework 4.7.2 Visual Studio design-time process and the separate process used by the .NET 6+ WinForms designer.

MDrivenServer on .NET Core

MDrivenServer is available as a .NET Core 3.1 build. Download MDrivenServerCore_<version>.zip from <version>.zip the MDriven public downloads location. The current published version is listed in MDrivenServerOnCoreVersion.xml.

See also