首页 > 其他分享 >.NET虚拟文件系统

.NET虚拟文件系统

时间:2023-03-07 09:24:58浏览次数:40  
标签:文件 中间件 文件系统 js 虚拟 virtualFileProvider NET options

TinyVFS

 

TinyVFS 是一个虚拟文件系统,受ABP vNext框架的启发。它可以将js、css、image、cshtml等文件嵌入到程序集中,
并在运行时可以将它们像物理文件一样去使用。

特点
在单体应用中,它可以将前端和后台(管理系统)分到单独项目工程中
在开发中它可以让开发人员同时进行开发不同的业务或者模块
它可以让我们将系统功能模块拆分后组装到一起
快速入门
1、通过Nuget安装组件

Install-Package TinyVFS
2、注册嵌入文件

编辑web资源项目.csproj

<ItemGroup>
<EmbeddedResource Include="MyResources\**\*.*" />
<Content Remove="MyResources\**\*.*" />
</ItemGroup>
通过如下代码片段将文件嵌入到虚拟文件系统。

services.AddVirtualFilesService();
services.Configure<VirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<WebApplication1.Pages.IndexModel>("WebResources");
});
3、获取虚拟文件

嵌入到程序集后可通过IVirtualFileProvider来获取文件或者目录内容

public class MyService
{
private readonly IVirtualFileProvider _virtualFileProvider;

public MyService(IVirtualFileProvider virtualFileProvider)
{
_virtualFileProvider = virtualFileProvider;
}

public void Foo()
{
//Getting a single file
var file = _virtualFileProvider.GetFileInfo("/MyResources/js/test.js");
var fileContent = file.ReadAsString(); //ReadAsString is an extension method of ABP

//Getting all files/directories under a directory
var directoryContents = _virtualFileProvider.GetDirectoryContents("/MyResources/js");
}
}
4、动态监听文件

当我们在本机进行开发时,也许我们会对资源项目中的静态文件进行修改,那么常规操作可以能我们去重新生成代码.....

现在我们可以通过ReplaceEmbeddedByPhysical 来通过浏览器刷新即可获取最新的文件信息

services.AddVirtualFilesService();
services.Configure<VirtualFileSystemOptions>(options =>
{
options.FileSets.ReplaceEmbeddedByPhysical<WebApplication1.Pages.IndexModel>(
Path.Combine(WebHostEnvironment.ContentRootPath, "..\\WebResources")
);
});
5、虚拟文件中间件

虚拟文件中间件用于向客户端/浏览器提供嵌入式(js, css, image ...)文件,
就像 wwwroot 文件夹中的物理(静态)文件一样. 在静态文件中间件之后添加它, 如下所示:

app.UseVirtualFiles();
如果想扩展其他文件格式那么,可使用重载方法,如下所示:

var provider = new FileExtensionContentTypeProvider();
provider.Mappings[".less"] = "text/css";
app.UseVirtualFiles(provider);
通过设置虚拟文件中间件,使在虚拟文件相同的位置放置物理文件,从而使物理文件覆盖虚拟文件成为可能。

6、ASP.NET Core集成

虚拟文件可以直接集成到ASP.NET Core中

· 虚拟文件可以像Web应用程序中的物理静态文件一样使用。
· Razor Views, Razor Pages, js, css, 图像文件和所有其他Web内容可以嵌入到程序集中并像物理文件一样使用。
· 应用程序可以覆盖模块(web资源)的虚拟文件, 就像将具有相同名称和扩展名的文件放入虚拟文件的同一文件夹中一样.

7、Views & Pages

它们不需要任何配置,可在我们应用程序中使用,当我们物理目录存在这些文件时,则覆盖虚拟文件。

项目地址:https://github.com/hueifeng/TinyVFS
————————————————
版权声明:本文为CSDN博主「HueiFeng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_27843785/article/details/120756076

标签:文件,中间件,文件系统,js,虚拟,virtualFileProvider,NET,options
From: https://www.cnblogs.com/wl-blog/p/17186906.html

相关文章

  • # ASP.NET Core使用静态文件、目录游览与MIME类型管理
    ASP.NETCore使用静态文件、目录游览与MIME类型管理https://blog.csdn.net/sD7O95O/article/details/78994496前言今天我们来了解了解ASP.NETCore中的静态文件的处理方......
  • Neural Network
    NeuralNetworkConsistofmanylayerswithcoefficients.Divideonepartintoseveralsubpartsandrepeatthisstepforpropertimes.TrainMakearandomgues......
  • 【译】.NET 7 中的性能改进(十二)
    原文|StephenToub翻译|郑子铭NewAPIs在.NET7中,Regex得到了几个新的方法,所有这些方法都能提高性能。新的API的简单性可能也误导了为实现它们所需的工作量,特别是由......
  • DELL R740做RAID指定虚拟盘起动
    1.开机按F2进入SystemSetup。  2.选择DeviceSettings  3,选择控制器  4,选择 控制器管理  5,指定虚拟磁盘。  保存重起完成。 其中第一......
  • .Net6 使用log4net将日志写入SqlServer
    第一步:引用Nuget包System.Data.SqlClient第二步:修改log4net.config配置文件增加appender节点注意,要将日志写入数据库需先创建数据库与日志表用于存放日志,不然日志有了......
  • .NET牛人应该知道些什么?
    任何一个使用.NET的人1:描述线程与进程的区别?(进程就是一个独立的运行的程序,线程是依附于进程的,具体概念还真不清楚。)2:什么是Windows服务,它的生命周期与标准的EXE程序有......
  • linux虚拟机连接不上putty
    1.linux虚拟机没有安装ssh2.虚拟机网卡模式设置错误3.防火墙未关闭查看防火墙状态有两种方式:执行命令firewall-cmd--state运行中running未启用notr......
  • 虚拟机连接xshell报错 Could not connect to 'hadoop102' (port 22): Connection fail
    在hadoop102中打开终端ping一下百度pingwww.daidu.com输入命令ifconfig出现下图这样的情况发现没有ens33重启networkservicenetworkrestart报错结尾出现红字Fa......
  • .NET周报 【3月第1期 2023-03-03】
    国内文章我做的FFmpeg开源C#封装库Sdcb.FFmpeghttps://www.cnblogs.com/sdflysha/archive/2023/02/27/dotnet-conf-china-2022-ffmpeg.htmlFFmpeg是知名的音频视频处理......
  • .Net引用Fo-Dicom 5.0 版本将Dicom转为图片时提示TransferSyntax不支持
    1.安装包fo-dicom.Codecsdotnetaddpackagefo-dicom.Codecs2.在应用程序启动前的初始化处注册服务newDicomSetupBuilder().RegisterServices((service)=>{ s......