Commit 1fb03cc
Fix DllImport library names for case-sensitive filesystems (microsoft#26415)
On case-sensitive filesystems (Windows with WSL, developer mode, or
per-directory case sensitivity), DllImport fails to load native
libraries due to relying on .NET's automatic platform-specific
extension/prefix addition, which can produce incorrect casing.
## Changes
- **NativeMethods.shared.cs**: Changed desktop platform library names
from `"onnxruntime"` to `"onnxruntime.dll"` and `"ortextensions"` to
`"ortextensions.dll"`
- Explicitly specifying extensions ensures consistent behavior across
case-sensitive and case-insensitive filesystems
- Android/iOS platform-specific names unchanged
## Impact
**Windows**: No changes required - libraries already named
`onnxruntime.dll`
**Linux/macOS**: Native packaging may need updates to provide
`onnxruntime.dll` in runtime folders (either as actual filename or
symlink to `libonnxruntime.so`/`libonnxruntime.dylib`)
```csharp
// Before (relied on automatic extension addition)
internal const string DllName = "onnxruntime";
// After (explicit extension for consistency)
internal const string DllName = "onnxruntime.dll";
```
Fixes microsoft#23509
<!-- START COPILOT CODING AGENT SUFFIX -->
<details>
<summary>Original prompt</summary>
>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>Does not work on case-sensitive filesystems</issue_title>
> <issue_description>### Describe the issue
>
> Library does not work on case-sensitive filesystems. We get:
>
> ```
> Unhandled exception. System.TypeInitializationException: The type
initializer for 'Microsoft.ML.OnnxRuntime.NativeMethods' threw an
exception.
> ---> System.EntryPointNotFoundException: Unable to find an entry point
named 'OrtGetApiBase' in DLL 'onnxruntime'.
> at Microsoft.ML.OnnxRuntime.NativeMethods.OrtGetApiBase()
> at Microsoft.ML.OnnxRuntime.NativeMethods..cctor()
> --- End of inner exception stack trace ---
> at Microsoft.ML.OnnxRuntime.SessionOptions..ctor()
> at Microsoft.ML.OnnxRuntime.InferenceSession..ctor(String modelPath)
> at Program.<Main>$(String[] args) in Z:\temp\onnxtest\Program.cs:line
1
> ```
>
> Probably due to a mistyped filename somewhere.
>
> ### To reproduce
>
> Create new C# project, use this Program.cs:
>
> ```
> new Microsoft.ML.OnnxRuntime.InferenceSession("");
> ```
>
>
> ### Urgency
>
> _No response_
>
> ### Platform
>
> Windows
>
> ### OS Version
>
> Microsoft Windows [Version 10.0.19045.6332]
>
> ### ONNX Runtime Installation
>
> Released Package
>
> ### ONNX Runtime Version or Commit ID
>
> 1.22.1
>
> ### ONNX Runtime API
>
> Other / Unknown
>
> ### Architecture
>
> X64
>
> ### Execution Provider
>
> Other / Unknown
>
> ### Execution Provider Library Version
>
> _No response_</issue_description>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> <comment_new><author>@snnn</author><body>
> I checked the code, still do not have much clue. We didn't specify the
extension name. Maybe it was added by the .net runtime.
>
>
https://github.com/microsoft/onnxruntime/blob/main/csharp/src/Microsoft.ML.OnnxRuntime/NativeMethods.shared.cs#L831</body></comment_new>
> <comment_new><author>@snnn</author><body>
> > Maybe we should just specify explicit extensions then in DllImport
>
> That might be the easiest fix. Would like to submit a
PR?</body></comment_new>
> <comment_new><author>@snnn</author><body>
> Don't close it.</body></comment_new>
> </comments>
>
</details>
- Fixes microsoft#26129
<!-- START COPILOT CODING AGENT TIPS -->
---
💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).
---------
Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: snnn <[email protected]>
Co-authored-by: Changming Sun <[email protected]>1 parent 4de6893 commit 1fb03cc
File tree
1 file changed
+7
-4
lines changed- csharp/src/Microsoft.ML.OnnxRuntime
1 file changed
+7
-4
lines changedLines changed: 7 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
866 | 866 | | |
867 | 867 | | |
868 | 868 | | |
869 | | - | |
| 869 | + | |
870 | 870 | | |
871 | 871 | | |
872 | | - | |
| 872 | + | |
873 | 873 | | |
874 | 874 | | |
875 | | - | |
| 875 | + | |
| 876 | + | |
876 | 877 | | |
877 | 878 | | |
878 | 879 | | |
| |||
2951 | 2952 | | |
2952 | 2953 | | |
2953 | 2954 | | |
2954 | | - | |
| 2955 | + | |
| 2956 | + | |
| 2957 | + | |
2955 | 2958 | | |
2956 | 2959 | | |
2957 | 2960 | | |
| |||
0 commit comments