Как объяснено в документах , у меня есть:
<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 , чтобы поиграться с ним.