Files
imsapidll48/LEGACY_BINARY_COMPATIBILITY.md
2026-09-03 21:32:00 +02:00

1.4 KiB

Legacy binary compatibility (10.0.0-3)

Goal: an application already compiled against IMSApiDotNet.dll 10.0.0-3 must be able to replace only the DLL with the new HttpClient implementation. No recompilation of the application is allowed.

Compatibility fixes applied to the shared source used by net48 and netstandard2.0:

  • IMSApiDotNetBase.setProperty(string,string) restored as public static void on the original declaring type.
  • property storage is process-global again, matching the legacy SystemProperties behavior.
  • IMSApiDotNet.loadLibrary() keeps the legacy static signature and returns a process-wide singleton again.
  • IMSApiDotNetConstants restored as a public legacy base class.
  • IMSApiDotNetBase derives from IMSApiDotNetConstants again.
  • legacy getIMSApiDotNetErrorText(int), logBegin(string) and logEnd(string) signatures restored.
  • Assembly name remains IMSApiDotNet and AssemblyVersion remains 10.0.0.3 for both targets.

Verification

Run on Windows with a .NET SDK / .NET Framework 4.8 runtime:

.\scripts\check-legacy-binary-compat.ps1

The smoke executable is compiled against the untouched reference\IMSApiDotNet_10.0.0-3_original.dll. The script then copies that unchanged EXE into two clean directories and replaces only IMSApiDotNet.dll, first with the net48 build and then with the netstandard2.0 build. Both executions must print ABI OK.