24 lines
1.4 KiB
Markdown
24 lines
1.4 KiB
Markdown
# 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`.
|