我正在尝试以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 平台的范围......