【发布时间】:2019-12-22 09:51:11
【问题描述】:
我正在尝试以这种方式将 IConfiguration 与 Uno 平台集成:
public class Startup
{
internal static void Init()
{
var assembly = Assembly.GetExecutingAssembly();
var resourceName = assembly.GetManifestResourceNames()
.FirstOrDefault(f => f.Contains("appsettings.json"));
if (!string.IsNullOrEmpty(resourceName))
{
using (var s = assembly.GetManifestResourceStream(resourceName))
{
//var content = s.ReadToEnd();
var host = new HostBuilder()
.ConfigureHostConfiguration(c =>
{
c.AddJsonStream(s);
})
.ConfigureServices((c, x) => ConfigureServices(c, x))
.ConfigureLogging(l => l.AddConsole(abc =>
{
abc.DisableColors = true;
}))
.Build();
}
}
}
我在共享项目中将appsettings.json 定义为嵌入式资源并始终复制。
使用 UWP 运行成功,但使用 Android 运行失败并出现以下错误:
System.ArgumentException: '路径必须是绝对的。参数名称:root'
在我的(其他)Xamarin 项目中,添加此功能后它可以按预期工作:
.ConfigureHostConfiguration(c =>
{
c.AddCommandLine(new string[] { $"ContentRoot={Xamarin.Essentials.FileSystem.AppDataDirectory}" });
c.AddJsonStream(stream);
})
但据我所知,Xamarin Essentials 超出了 Uno 平台的范围......
【问题讨论】:
-
大部分 Xamarin Essentials API 都与 Uno 平台兼容,至少适用于 Android/iOS/UWP。
标签: xamarin uno-platform