feat(bindings/dotnet): Bindings dotnet implement#7238
Open
Fatorin wants to merge 11 commits intoapache:mainfrom
Open
feat(bindings/dotnet): Bindings dotnet implement#7238Fatorin wants to merge 11 commits intoapache:mainfrom
Fatorin wants to merge 11 commits intoapache:mainfrom
Conversation
…or sensitive services
…rFixture and improve test structure
tisonkun
reviewed
Mar 7, 2026
| run: | | ||
| cargo build | ||
| dotnet test -f ${{ matrix.dotnet-version == '8.0.x' && 'net8.0' || 'net10.0' }} | ||
| dotnet test --filter "FullyQualifiedName!~Behavior" -f ${{ matrix.dotnet-version == '8.0.x' && 'net8.0' || 'net10.0' }} |
Contributor
Author
There was a problem hiding this comment.
FullyQualifiedName~Behavior is for Test Binding Dotnet. [test_behavior_binding_dotnet/action.yaml]
FullyQualifiedName!~Behavior is for Bindings Dotnet CI. [ci_bindings_dotnet.yml]
one for behavior/integration coverage, and one for normal CI coverage.
Contributor
Author
There was a problem hiding this comment.
I refactored the test cases make the structure clearer and simplify the CI test commands.
…mands - Migrate legacy Fs/Memory operator coverage into behavior-oriented tests. - Add additional sync/async parity cases across behavior test suites. - Introduce OperatorBehaviorTest for shared operator scenarios (info, duplicate, stream roundtrip, and cancellation resilience). - Remove obsolete FsOperatorTest and MemoryOperatorTest after migration. - Simplify Dotnet CI test invocation by using OPENDAL_TEST=memory and a unified `dotnet test` command. - Simplify behavior binding action test command to reduce filter confusion.
…ice-specific behavior drift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which issue does this PR close?
Closes #2428.
Rationale for this change
This PR adds the Apache OpenDAL .NET binding together with its testing and CI integration.
The binding provides a .NET-friendly API built on top of the OpenDAL Rust core via FFI, allowing .NET applications to access OpenDAL services using familiar .NET patterns such as async/await,
Stream, andIDisposable.In addition to the core binding implementation, this PR also introduces behavior-test integration for the .NET binding and separates regular binding tests from backend behavior tests in CI, following the testing model already used by other language bindings.
What changes are included in this PR?
OperatorAPIs covering common object operations, including read, write, stat, list, delete, copy, rename, create dir, remove all, and presign operations.Task.Streamwrappers (OperatorInputStream,OperatorOutputStream).ReadOptions,WriteOptions,ListOptions,StatOptions).RetryLayer,TimeoutLayer,ConcurrentLimitLayer).OpenDALExceptionandErrorCode.Are there any user-facing changes?
Yes.
This PR introduces the Apache OpenDAL .NET binding, allowing .NET users to interact with OpenDAL services through a native .NET API.
It also adds documentation and examples for using the binding.
AI Usage Statement
AI tools were used to assist with development exploration, code implementation, and documentation drafting.
All code and changes were manually reviewed and validated before submission.
AI version used: GitHub Copilot (Codex 5.2)