Skip to content

Commit c17e59d

Browse files
committed
chore(bindings): updated readme
Signed-off-by: Laszlo Gecse <[email protected]>
1 parent 84f455b commit c17e59d

File tree

1 file changed

+52
-50
lines changed

1 file changed

+52
-50
lines changed

data-plane/bindings/dotnet/README.md

Lines changed: 52 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,24 @@ Slim.Shutdown();
3131

3232
### Building from Source
3333

34+
To build the complete SDK, you need artifacts from the Rust bindings build:
35+
36+
```bash
37+
# From the root of the repository
38+
cd data-plane/bindings/rust
39+
task bindings:build:all TARGET=x86_64-unknown-linux-gnu PROFILE=release
40+
41+
# Copy artifacts and build .NET bindings
42+
cd ../dotnet
43+
task ci ARTIFACTS_DIR=../../target/x86_64-unknown-linux-gnu/release BINDGEN_TARGET=x86_64-unknown-linux-gnu
44+
```
45+
46+
For development on a single platform:
47+
3448
```bash
35-
cd data-plane/bindings/dotnet
36-
task build # Build rust library, generate bindings, and build .NET solution
49+
task generate ARTIFACTS_DIR=./artifacts BINDGEN_TARGET=x86_64-unknown-linux-gnu
50+
task build
51+
task test
3752
```
3853

3954
## API Overview
@@ -71,61 +86,59 @@ See example source code in `Slim.Examples.*` projects for full implementation de
7186

7287
## Running Tests
7388

74-
**Smoke tests** (no server required):
75-
```bash
76-
task test:smoke
77-
```
89+
The SDK includes smoke tests that don't require a running SLIM server:
7890

79-
**Integration tests** (requires running server):
8091
```bash
81-
# Terminal 1: Start the server
82-
cd ../../
83-
task run:server
84-
85-
# Terminal 2: Run integration tests
86-
task test:integration
92+
task test
8793
```
8894

89-
**All tests:**
90-
```bash
91-
task test:all
92-
```
95+
For full integration testing with a SLIM server, you would need to:
96+
1. Start a SLIM server instance
97+
2. Run the example applications to verify functionality
98+
99+
See the `Slim.Examples.*` projects for working integration examples.
93100

94101
## Development
95102

96103
### Available Tasks
97104

98105
```bash
99-
task # List all available tasks
100-
task build # Build rust library, generate bindings, and build .NET solution
101-
task test:smoke # Run smoke tests (no server required)
102-
task test:integration # Run integration tests (requires running SLIM server)
103-
task test:all # Run all tests (smoke + integration)
104-
task pack # Create NuGet package with all runtime libraries
105-
task publish # Publish NuGet package to NuGet.org (requires NUGET_API_TOKEN)
106-
task test:verify-package # Verify NuGet package can be installed and works locally
107-
task clean # Clean all build artifacts
106+
task # List all available tasks
107+
task ci # Run complete CI pipeline: generate, copy runtimes, build, test, pack
108+
task generate # Generate C# bindings from artifacts (requires ARTIFACTS_DIR)
109+
task copy:runtimes # Copy runtime libraries from artifacts to runtimes directory
110+
task build # Build .NET solution (expects bindings already generated)
111+
task test # Run smoke tests (no server required)
112+
task pack # Create NuGet package (expects runtimes already copied)
113+
task clean # Clean all build artifacts
108114
```
109115

110116
### Regenerating Bindings
111117

112-
If the Rust bindings change:
118+
If the Rust bindings change, you need to rebuild the Rust library first, then regenerate C# bindings:
113119

114120
```bash
115-
task generate
116-
git add Slim/generated/
117-
git commit -m "Regenerate dotnet bindings"
121+
# Build Rust library for your platform
122+
cd ../rust
123+
task bindings:build:all TARGET=x86_64-unknown-linux-gnu PROFILE=release
124+
125+
# Generate new C# bindings
126+
cd ../dotnet
127+
task generate ARTIFACTS_DIR=../../target/x86_64-unknown-linux-gnu/release BINDGEN_TARGET=x86_64-unknown-linux-gnu
118128
```
119129

120130
## Platform Support
121131

122132
| Platform | Architecture | .NET RID | Status |
123133
|----------|--------------|----------|--------|
124-
| Linux | x86_64 | linux-x64 | Supported |
125-
| Linux | aarch64 | linux-arm64 | Supported |
126-
| macOS | x86_64 | osx-x64 | Supported |
127-
| macOS | aarch64 | osx-arm64 | Supported |
128-
| Windows | x86_64 | win-x64 | Supported |
134+
| Linux (GNU) | x86_64 | linux-x64 | Supported |
135+
| Linux (GNU) | aarch64 | linux-arm64 | Supported |
136+
| Linux (musl) | x86_64 | linux-musl-x64 | Supported |
137+
| Linux (musl) | aarch64 | linux-musl-arm64 | Supported |
138+
| macOS | x86_64 | osx-x64 | Supported |
139+
| macOS | aarch64 | osx-arm64 | Supported |
140+
| Windows | x86_64 | win-x64 | Supported |
141+
| Windows | aarch64 | win-arm64 | Supported |
129142

130143
## NuGet Package
131144

@@ -143,23 +156,12 @@ dotnet run
143156

144157
The NuGet package is automatically published when a release tag is pushed (e.g., `slim-bindings-v0.1.0`). The release workflow:
145158

146-
1. Builds and tests bindings on all supported platforms
147-
2. Creates a NuGet package with native libraries for all platforms
148-
3. Publishes to NuGet.org
149-
4. Tests the published package on 5 platforms (Linux x64 GNU/musl, Windows x64, macOS x64/arm64)
150-
5. Finalizes the release
151-
152-
**Manual Publishing:**
153-
```bash
154-
# Create package
155-
task pack
159+
1. Builds native libraries for all supported platforms
160+
2. Tests bindings locally with all platform libraries
161+
3. Creates a NuGet package with native libraries for all platforms
162+
4. Publishes to NuGet.org
156163

157-
# Publish to NuGet.org
158-
task publish NUGET_API_TOKEN=<your-api-token>
159164

160-
# Or verify locally before publishing
161-
task test:verify-package
162-
```
163165

164166
## License
165167

0 commit comments

Comments
 (0)