Как читать встроенный ресурс с помощью ManifestEmbeddedFileProvider - PullRequest
0 голосов
/ 19 февраля 2019

Как объяснено в документах , у меня есть:

<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().

ОБНОВЛЕНИЕ

Оказывается, что встроенный ресурс автоматически попадает в сателлитную сборку, потому что в имени его файла есть имя культуры, как объяснено здесь .Это, кажется, приводит к NullReferenceException в CreateReadStream().Остается вопрос, как прочитать этот ресурс со спутниковой сборки, используя ManifestEmbeddedFileProvider.

. Я создал gist , чтобы поиграться с ним.

...