我正在开发一个项目结构,其中有多个项目为同一组静态文件提供服务。
开始时,每个项目都会为静态文件和API服务提供服务,但后来我计划将其中一些项目分成多个项目。
在经典VS库中,您可以将文件标记为内容。这些将包含在引用该库的任何项目的构建输出中。
我尝试创建一个包含静态文件的项目ProjectStatic,并从ProjectA和ProjectB1引用它,但ProjectStatic中的所有文件都不包含在ProjectA和ProjectB1的输出中。
可以使用project.json完成吗?
答案 0 :(得分:5)
看看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
加载。