首页 > 解决方案 > EmbeddedProvider.GetDirectoryContents 返回 0 个结果

问题描述

SO上有很多关于如何访问资源文件的帖子。我很不知道是否首选一个,或者它们是否只是不同的选择。

.NET Core 3.1,类库

我在我的项目中创建了一个名为 ResourceFiles 的新文件夹并添加了许多文件

我打开 csproj 并添加

<EmbeddedResource Include="ResourceFiles/*" />

为了消费这个,我有

using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.FileProviders.Embedded;

namespace Core.Html  
{
    internal static class Template
    {
        internal static string Get()
        {
            var embeddedProvider = new EmbeddedFileProvider(Assembly.GetExecutingAssembly());
            using (var reader = embeddedProvider.GetFileInfo("file.txt").CreateReadStream())
            {
                //stuff
            }
        }
     }
}

这适用于单个文件。

我想做的是返回一个集合,FileInfo因为在 ResourceFiles 目录中有很多文件。

我希望做以下事情

var allFiles = embeddedProvider.GetDirectoryContents("ResourceFiles");

这总是返回一个空列表。我不明白为什么。我究竟做错了什么?

标签: .net-core-3.1

解决方案


查看 EmbeddedFileProvider 的源代码,它仅支持根目录中的文件。如果您提供“/”以外的任何内容,则此方法将失败。


推荐阅读