# 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:

```powershell
.\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`.
