🚀 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[edit source]

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[edit source]

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[edit source]

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[edit source]

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[edit source]

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[edit source]

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[edit source]

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[edit source]

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[edit source]