如何使用ManifestEmbeddedFileProvider读取嵌入式资源

时间:2019-02-19 15:18:27

标签: c# .net-core msbuild embedded-resource csproj

the docs中所述,我有:

<PropertyGroup>
    ...
   <GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
</PropertyGroup>
...
<ItemGroup>
    <EmbeddedResource Include="**/*.de-CH.json" />
</ItemGroup>

在我的csproj中。然后,我尝试使用以下方法读取这些嵌入式JSON之一:

var manifestEmbeddedProvider = new ManifestEmbeddedFileProvider(assembly);
var fileInfo = manifestEmbeddedProvider.GetFileInfo(resourceFile);
// fileInfo.Exists is true here!!!
using (var reader = new StreamReader(fileInfo.CreateReadStream())) {
    ....
}

但是我在NullReferenceException得到了Microsoft.Extensions.FileProviders.Embedded.Manifest.ManifestFileInfo.CreateReadStream()

更新

事实证明,嵌入式资源自动降落在附属程序集中,因为它的文件名中具有区域性名称,如here所述。这似乎导致NullReferenceException中的CreateReadStream()。问题仍然是如何使用ManifestEmbeddedFileProvider从卫星程序集中读取该资源。

我创建了一个gist来玩耍。

0 个答案:

没有答案