如何以字符串形式获取 UNO 共享项目的文件内容

Syn*_*bit 2 c# webassembly uno-platform

在常规的 C#/UWP 中,将文件(或资源)的内容读取到字符串变量是可能没有任何(更大的)问题的。UNO 平台的 WebAssembly 构建目标是如何完成的?

我已经尝试过的:例如,根据浏览器的调试控制台,只要我尝试使用反射,我的代码执行就会停止(没有抛出任何异常)。在深入 JavaScript 丛林之前,我决定咨询这里的专家。(作为最后的解决方法,我考虑过使用 HTTP 客户端实现,但只有在确实没有可用的替代方案时我才会这样做。)

Jer*_*ban 5

Uno 的 WebAssembly 目标目前不支持读取内容文件作为System.IO.Fileapi 的一部分(并且可能不会在不久的将来因为它的同步 API)。

跨平台工作的最简单方法是使用嵌入式资源:

<ItemGroup>
  <EmbeddedResource Include="myfile.txt" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

然后在代码中,使用这样的东西:

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}");
    }
}
Run Code Online (Sandbox Code Playgroud)