如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来玩耍。