如何以字符串形式获取 UNO 共享项目的文件内容
How to get a file's content of UNO shared project as string
在常规 C#/UWP 中,可以将文件(或资源)内容读取到字符串变量而不会出现任何(更大)问题。这是如何使用 UNO 平台的 WebAssembly 构建目标完成的?
我已经尝试过的:例如,根据浏览器的调试控制台,一旦我尝试使用反射,我的代码执行就会停止(没有抛出任何异常)。在深入 JavaScript 丛林之前,我决定请教这里的专家。
(作为最后的解决方法,我考虑过使用 HTTP 客户端实现,但只有在确实没有可用的替代方案时我才会这样做。)
作为 System.IO.File
api 的一部分,Uno 的 WebAssembly 目标目前不支持读取内容文件(而且可能在不久的将来不会,因为它是同步的 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}");
}
}
在常规 C#/UWP 中,可以将文件(或资源)内容读取到字符串变量而不会出现任何(更大)问题。这是如何使用 UNO 平台的 WebAssembly 构建目标完成的?
我已经尝试过的:例如,根据浏览器的调试控制台,一旦我尝试使用反射,我的代码执行就会停止(没有抛出任何异常)。在深入 JavaScript 丛林之前,我决定请教这里的专家。 (作为最后的解决方法,我考虑过使用 HTTP 客户端实现,但只有在确实没有可用的替代方案时我才会这样做。)
作为 System.IO.File
api 的一部分,Uno 的 WebAssembly 目标目前不支持读取内容文件(而且可能在不久的将来不会,因为它是同步的 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}");
}
}