加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core – 从库项目中包含wwwroot?

发布时间:2020-12-16 03:54:18 所属栏目:asp.Net 来源:网络整理
导读:我正在开发一个项目结构,其中有多个项目服务于同一组静态文件. 在开始时,每个项目都将服务于静态文件和API服务,但稍后我计划将其中一些项目分成多个项目. ProjectA将同时为静态文件和API提供服务 ProjectB1将仅提供与ProjectA中相同的静态文件 ProjectB2将仅
我正在开发一个项目结构,其中有多个项目服务于同一组静态文件.

在开始时,每个项目都将服务于静态文件和API服务,但稍后我计划将其中一些项目分成多个项目.

> ProjectA将同时为静态文件和API提供服务
> ProjectB1将仅提供与ProjectA中相同的静态文件
> ProjectB2将仅提供API

在经典的VS库中,您可以将文件标记为内容.这些将包含在引用该库的任何项目的构建输出中.

我尝试创建一个包含静态文件的项目ProjectStatic,并从ProjectA和ProjectB1引用它,但ProjectStatic中的所有文件都不包含在ProjectA和ProjectB1的输出中.

可以使用project.json完成吗?

解决方法

看看 PinpointTownes在他的OpenIddict项目中如何实现这一点.

您可以将UseStaticFiles调用与EmbeddedFileProvider一起使用.它是rc1-final软件包的一部分,你可以看到here.相关代码可以在GitHub找到.

仅供未来读者使用:

app.UseStaticFiles(new StaticFileOptions {
        FileProvider = new EmbeddedFileProvider(
            assembly: Assembly.Load(new AssemblyName("OpenIddict.Assets")),baseNamespace: "OpenIddict.Assets")
});

OpenIddict.Assets是包含静态资源的程序集/项目名称.

更新:

在通过源挖掘并找到正确的存储库之后,还有一个PhysicalFileProvider,您可以使用它而不是将其打包到程序集中并指向文件系统上的任意文件夹.

app.UseStaticFiles(new StaticFileOptions {
        FileProvider = new PhysicalFileProvider("/path/to/shared/staticfiles")
});

更新2:

只是为了完整起见,还有一个CompositeFileProvider可以用来让多个IFileProviders创建某种虚拟文件系统结构,即如果在PhysicalFileProvider给定位置找不到该文件,则从EmbeddedFileProvider加载它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读