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