SshSharp.IO.Abstractions
1.0.0
dotnet add package SshSharp.IO.Abstractions --version 1.0.0
NuGet\Install-Package SshSharp.IO.Abstractions -Version 1.0.0
<PackageReference Include="SshSharp.IO.Abstractions" Version="1.0.0" />
<PackageVersion Include="SshSharp.IO.Abstractions" Version="1.0.0" />
<PackageReference Include="SshSharp.IO.Abstractions" />
paket add SshSharp.IO.Abstractions --version 1.0.0
#r "nuget: SshSharp.IO.Abstractions, 1.0.0"
#:package SshSharp.IO.Abstractions@1.0.0
#addin nuget:?package=SshSharp.IO.Abstractions&version=1.0.0
#tool nuget:?package=SshSharp.IO.Abstractions&version=1.0.0
SshSharp.IO.Abstractions
An IFileSystem (System.IO.Abstractions) over SFTP, built on
SshSharp: code written against IFileSystem instead of File, Directory and Path
reads and writes files on an SSH server. Nothing is mounted, so only your application sees them.
using System.IO.Abstractions;
using SshSharp;
using SshSharp.IO.Abstractions;
using SshSharp.Sftp;
await using var ssh = await SshClient.ConnectAsync("deploy@files.example.com");
await using var sftp = await ssh.OpenSftpAsync();
IFileSystem fs = new SftpFileSystem(sftp);
fs.Directory.CreateDirectory("reports/2026");
fs.File.WriteAllText("reports/2026/summary.txt", "All green.");
foreach (var path in fs.Directory.EnumerateFiles("reports", "*.txt", SearchOption.AllDirectories))
{
Console.WriteLine($"{path}: {fs.FileInfo.New(path).Length} bytes");
}
Paths are POSIX paths on the server (fs.Path uses / on every OS), relative to the login directory. Errors are the usual
System.IO exceptions, from synchronous and asynchronous calls alike, and Exists never throws. The synchronous calls wait for
the server, bounded by SftpFileSystemOptions.OperationTimeout; whole-file reads, writes and copies are bounded by the time
without progress, so large files are not cut off. Not supported: FileSystemWatcher, DriveInfo, FileVersionInfo,
RandomAccess, handles, encryption and Replace. Documentation: https://zcsizmadia.github.io/SshSharp/
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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
- SshSharp (>= 1.0.0)
- TestableIO.System.IO.Abstractions (>= 22.3.0)
-
net8.0
- SshSharp (>= 1.0.0)
- TestableIO.System.IO.Abstractions (>= 22.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.