LTRData.DiscUtils.Fuse
1.0.0.4
dotnet add package LTRData.DiscUtils.Fuse --version 1.0.0.4
NuGet\Install-Package LTRData.DiscUtils.Fuse -Version 1.0.0.4
<PackageReference Include="LTRData.DiscUtils.Fuse" Version="1.0.0.4" />
paket add LTRData.DiscUtils.Fuse --version 1.0.0.4
#r "nuget: LTRData.DiscUtils.Fuse, 1.0.0.4"
// Install LTRData.DiscUtils.Fuse as a Cake Addin #addin nuget:?package=LTRData.DiscUtils.Fuse&version=1.0.0.4 // Install LTRData.DiscUtils.Fuse as a Cake Tool #tool nuget:?package=LTRData.DiscUtils.Fuse&version=1.0.0.4
FuseDotNet
.NET wrapper for Fuse libraries for creating file systems in user mode.
By using Fuse library, you can create your own file systems very easily without writing a kernel level file system driver. FuseDotNet is a library that allows you to make a file system on .NET environment.
Alternatives
In comparison to other libraries like FuseSharp, the main goal of this library is optimized performance by less garbage collector and heap allocation pressure. It could be a bit more difficult to use, because path strings and I/O buffers are not directly available to handling routines as strings and byte arrays, but the implemenations should probably be fairly straight-forward anyway.
Licensing
FuseDotNet is distributed under a version of the "MIT License", which is a BSD-like license. See the 'LICENSE.txt' file for details.
Environment
- Linux: x86 or x64
- FreeBSD: x64
- Fuse: Fuse3
Targets .NET Framework 4.8 and .NET Standard 2.0 can be used with Mono and targets .NET Standard 2.1 can be used with .NET Core 3.1 - .NET 5.0 applications and libraries. There are also .NET 6.0 and .NET 7.0 builds with certain optimizations available in those versions.
How to write a file system
To make a file system, an application needs to implement IFuseOperations
interface. Once implemented, you can invoke Mount
method on your driver
instance to mount a drive. By default, the Fuse native library forks the process
and continues work in a child process. The parent process returns. This can be an
issue when for example debugging, in which case "-f" or "-d" options can be passed
to Fuse to instead do work in current process and block until file system is
dismounted. Parameters to Mount
method are just like Fuse library. See sample
codes under 'sample' directory. Administrator privileges are required to run
file system applications.
Sample code
There are sample implementations, "mirror" and "tempfs", that show basic
implementation of the library. There is also a "DiscUtils.Fuse" package that
implements a FuseDotNet file system using IFileSystem
implementations in DiscUtils
library.
Unmounting
Just run the below command to unmount a file system.
umount /mountpoint
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 is compatible. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.8
- LTRData.DiscUtils.Core (>= 1.0.33)
- LTRData.DiscUtils.Iso9660 (>= 1.0.33)
- LTRData.DiscUtils.Streams (>= 1.0.33)
- LTRData.DiscUtils.VirtualFileSystem (>= 1.0.33)
- LTRData.FuseDotNet (>= 1.0.0.4)
- System.Memory (>= 4.5.5)
-
.NETStandard 2.0
- LTRData.DiscUtils.Core (>= 1.0.33)
- LTRData.DiscUtils.Iso9660 (>= 1.0.33)
- LTRData.DiscUtils.Streams (>= 1.0.33)
- LTRData.DiscUtils.VirtualFileSystem (>= 1.0.33)
- LTRData.FuseDotNet (>= 1.0.0.4)
- System.Memory (>= 4.5.5)
-
.NETStandard 2.1
- LTRData.DiscUtils.Core (>= 1.0.33)
- LTRData.DiscUtils.Iso9660 (>= 1.0.33)
- LTRData.DiscUtils.Streams (>= 1.0.33)
- LTRData.DiscUtils.VirtualFileSystem (>= 1.0.33)
- LTRData.FuseDotNet (>= 1.0.0.4)
- System.Memory (>= 4.5.5)
-
net6.0
- LTRData.DiscUtils.Core (>= 1.0.33)
- LTRData.DiscUtils.Iso9660 (>= 1.0.33)
- LTRData.DiscUtils.Streams (>= 1.0.33)
- LTRData.DiscUtils.VirtualFileSystem (>= 1.0.33)
- LTRData.FuseDotNet (>= 1.0.0.4)
- System.Memory (>= 4.5.5)
-
net7.0
- LTRData.DiscUtils.Core (>= 1.0.33)
- LTRData.DiscUtils.Iso9660 (>= 1.0.33)
- LTRData.DiscUtils.Streams (>= 1.0.33)
- LTRData.DiscUtils.VirtualFileSystem (>= 1.0.33)
- LTRData.FuseDotNet (>= 1.0.0.4)
- System.Memory (>= 4.5.5)
-
net8.0
- LTRData.DiscUtils.Core (>= 1.0.33)
- LTRData.DiscUtils.Iso9660 (>= 1.0.33)
- LTRData.DiscUtils.Streams (>= 1.0.33)
- LTRData.DiscUtils.VirtualFileSystem (>= 1.0.33)
- LTRData.FuseDotNet (>= 1.0.0.4)
- System.Memory (>= 4.5.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.