Как получить содержимое файла общего проекта UNO в виде строки
В обычном C#/UWP можно без каких-либо (больших) проблем прочитать содержимое файла (или ресурса) в строковую переменную. Как это сделать с целью сборки платформы WebAssembly UNO?
Что я уже пробовал: Согласно консоли отладки браузера, выполнение моего кода прекращается (без каких-либо исключений), как только я пытаюсь использовать отражение, например. Прежде чем копаться глубже в джунглях JavaScript, я решил спросить здесь специалистов. (В качестве последнего обходного пути я подумал об использовании реализации HTTP-клиента, но я сделаю это только в том случае, если на самом деле альтернативы нет.)
1 ответ
Цель WebAssembly для Uno пока не поддерживает чтение файлов содержимого как часть System.IO.File
API (и, вероятно, не в ближайшем будущем из-за его синхронного API).
Самый простой способ, который работает на кроссплатформенных, это использовать встроенные ресурсы:
<ItemGroup>
<EmbeddedResource Include="myfile.txt" />
</ItemGroup>
Затем в коде используйте что-то вроде этого:
static string ReadResource(string fileName)
{
var assembly = typeof(Program).Assembly;
var resourceName = assembly.GetManifestResourceNames()
.FirstOrDefault(f => f.Contains(fileName));
if (!string.IsNullOrEmpty(resourceName))
{
using (var s = new StreamReader(assembly .GetManifestResourceStream(resourceName)))
{
return s.ReadToEnd();
}
}
else
{
throw new InvalidOperationException(
$"Unable to find resource {fileName} in {typeof(Program).Assembly}");
}
}