Soenneker.GitHub.FileStore
4.0.656
Prefix Reserved
See the version list below for details.
dotnet add package Soenneker.GitHub.FileStore --version 4.0.656
NuGet\Install-Package Soenneker.GitHub.FileStore -Version 4.0.656
<PackageReference Include="Soenneker.GitHub.FileStore" Version="4.0.656" />
<PackageVersion Include="Soenneker.GitHub.FileStore" Version="4.0.656" />
<PackageReference Include="Soenneker.GitHub.FileStore" />
paket add Soenneker.GitHub.FileStore --version 4.0.656
#r "nuget: Soenneker.GitHub.FileStore, 4.0.656"
#:package Soenneker.GitHub.FileStore@4.0.656
#addin nuget:?package=Soenneker.GitHub.FileStore&version=4.0.656
#tool nuget:?package=Soenneker.GitHub.FileStore&version=4.0.656
Soenneker.GitHub.FileStore
Reads, writes, copies, moves, lists, and deletes repository files through GitHub's Contents API.
Installation
dotnet add package Soenneker.GitHub.FileStore
Configure and register
{
"GH": {
"Token": "your-github-token"
}
}
using Soenneker.GitHub.FileStore.Registrars;
builder.Services.AddGitHubFileStoreAsSingleton();
Use a token with Contents read permission for Get, Read, List, and Exists. Writes and deletes require Contents write permission. Keep the token in secret storage.
Read and write files
string content = await store.Read(
"example-org", "example-repository", "README.md", cancellationToken);
FileCommit? commit = await store.Write(
owner: "example-org",
repo: "example-repository",
path: "docs/example.txt",
content: "Hello from the Contents API",
message: "Add example document",
branch: "main",
cancellationToken: cancellationToken);
Write and WriteBytes create a file when it does not exist and use its current SHA when updating it. The lookup is performed on the requested branch, so non-default branch updates do not reuse a SHA from main. Supplying both authorName and authorEmail sets the commit author; supplying only one leaves the author unset.
Copy, move, and directory operations
await store.Copy(
"example-org", "example-repository",
"docs/source.txt", "archive/source.txt",
branch: "release",
cancellationToken: cancellationToken);
IReadOnlyList<FileCommit> deleted = await store.DeleteDirectory(
"example-org", "example-repository", "old-docs",
branch: "release",
cancellationToken: cancellationToken);
Copy and move read from the same branch they write to. A move is two commits—copy, then delete—so a failed delete can leave both paths and throws for the caller to handle. WriteDirectory and recursive deletion process files as separate commits and continue past individual file failures; their returned lists contain only successful commits.
Delete, DeleteDirectory, and DeleteRepositoryContents are destructive. They retrieve branch-specific SHAs immediately before deletion, but concurrent changes can still cause GitHub to reject a stale SHA.
Exists() returns false only for a not-found response. Authentication, permission, rate-limit, and transport failures propagate instead of being reported as a missing file.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Soenneker.Extensions.Arrays.Bytes (>= 4.0.66)
- Soenneker.GitHub.ClientUtil (>= 4.0.640)
- Soenneker.Utils.File (>= 4.0.2248)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.0.659 | 0 | 9/4/2026 |
| 4.0.658 | 0 | 9/4/2026 |
| 4.0.657 | 0 | 9/4/2026 |
| 4.0.656 | 0 | 9/4/2026 |
| 4.0.655 | 25 | 9/4/2026 |
| 4.0.654 | 31 | 9/4/2026 |
| 4.0.651 | 31 | 9/4/2026 |
| 4.0.650 | 30 | 9/4/2026 |
| 4.0.649 | 54 | 9/3/2026 |
| 4.0.648 | 66 | 9/3/2026 |
| 4.0.647 | 62 | 9/3/2026 |
| 4.0.646 | 77 | 9/1/2026 |
| 4.0.645 | 69 | 9/1/2026 |
| 4.0.644 | 67 | 9/1/2026 |
| 4.0.643 | 67 | 9/1/2026 |
| 4.0.642 | 83 | 8/31/2026 |
| 4.0.641 | 77 | 8/31/2026 |
| 4.0.640 | 79 | 8/31/2026 |
| 4.0.639 | 81 | 8/31/2026 |
Updated Multiple NuGet packages