Ramstack.FileProviders
2.2.1
dotnet add package Ramstack.FileProviders --version 2.2.1
NuGet\Install-Package Ramstack.FileProviders -Version 2.2.1
<PackageReference Include="Ramstack.FileProviders" Version="2.2.1" />
paket add Ramstack.FileProviders --version 2.2.1
#r "nuget: Ramstack.FileProviders, 2.2.1"
// Install Ramstack.FileProviders as a Cake Addin #addin nuget:?package=Ramstack.FileProviders&version=2.2.1 // Install Ramstack.FileProviders as a Cake Tool #tool nuget:?package=Ramstack.FileProviders&version=2.2.1
Ramstack.FileProviders
Represents a .NET library that provides additional implementations for Microsoft.Extensions.FileProviders
including:
PrefixedFileProvider
SubFileProvider
ZipFileProvider
Getting Started
To install the Ramstack.FileProviders
NuGet package
in your project, run the following command:
dotnet add package Ramstack.FileProviders
PrefixedFileProvider
PrefixedFileProvider
allows you to apply a prefix to the paths of files and directories.
This is useful when you need to organize files in a virtual hierarchy.
Example:
IFileProvider provider = new PrefixedFileProvider(innerProvider, "/project/app");
IFileInfo file = provider.GetFileInfo("/project/app/docs/README");
Console.WriteLine(file.Exists);
This is how you can add virtual directories to your project that are external to the project root:
string packagesPath = Path.Combine(environment.ContentRootPath, "../Packages");
string themesPath = Path.Combine(environment.ContentRootPath, "../Themes");
environment.ContentRootFileProvider = new CompositeFileProvider(
new PrefixedFileProvider("/Packages", new PhysicalFileProvider(packagesPath)),
new PrefixedFileProvider("/Themes", new PhysicalFileProvider(themesPath)),
environment.ContentRootFileProvider);
The Packages
and Themes
directories are now available to the ASP.NET infrastructure under their respective names,
as if they were originally defined within your project.
Before:
/App
├── Controllers
├── Models
├── Views
└── wwwroot
/Packages
├── package-1
└── package-2
/Themes
├── theme-1
└── theme-2
After:
/App
├── Controllers
├── Models
├── Views
├── Packages <-- (virtual)
│ ├── package1
│ └── package2
├── Themes <-- (virtual)
│ ├── theme1
│ └── theme2
└── wwwroot
SubFileProvider
SubFileProvider
lets you limit the view of the file system to a specific subdirectory, effectively creating a sandbox.
Example:
IFileProvider provider = new SubFileProvider(innerProvider, "/docs");
IFileInfo file = provider.GetFileInfo("/README");
Console.WriteLine(file.Exists);
ZipFileProvider
ZipFileProvider
enables access to files within ZIP archives as if they were part of the file system.
Example:
IFileProvider provider = new ZipFileProvider("/path/to/archive.zip");
foreach (IFileInfo file in provider.GetDirectoryContents("/"))
Console.WriteLine(file.Name);
Related Packages
- Ramstack.FileProviders.Extensions — Useful and convenient extensions for
IFileProvider
, bringing its capabilities and experience closer to what's provided by theDirectoryInfo
andFileInfo
classes. - Ramstack.FileProviders.Globbing — A file provider that filters files using include and/or exclude glob patterns. Include patterns make only matching files visible, while exclude patterns hide specific files. Both include and exclude patterns can be combined for flexible file visibility control.
- Ramstack.FileProviders.Composition — Provides a helper class for flattening and composing
IFileProvider
.
Supported versions
Version | |
---|---|
.NET | 6, 7, 8 |
Contributions
Bug reports and contributions are welcome.
License
This package is released as open source under the MIT License. See the LICENSE file for more details.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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 was computed. 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 was computed. 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. |
-
net6.0
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 |
---|---|---|
2.2.1 | 130 | 9/14/2024 |
2.2.0 | 94 | 9/14/2024 |
2.1.0 | 104 | 8/28/2024 |
2.1.0-preview.3 | 48 | 8/27/2024 |
2.1.0-preview.2 | 52 | 8/26/2024 |
2.1.0-preview.1 | 84 | 8/21/2024 |
2.0.0 | 123 | 8/11/2024 |
1.1.0 | 99 | 8/6/2024 |
1.0.0 | 72 | 8/4/2024 |
1.0.0-preview.1 | 38 | 8/3/2024 |