You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI Android平台NLog配置文件部署失败,求正确配置方法

MAUI Android平台NLog配置文件部署问题解决办法

问题背景

在MAUI应用中针对Android平台配置NLog时,出现配置文件找不到的错误,提示路径/data/user/0/com.companyname.starter/files/Android-NLog.config不存在,当前配置文件的生成操作为“从不复制”。

解决步骤

1. 调整配置文件的生成属性

找到项目中的Android-NLog.config文件,右键打开属性面板:

  • 将生成操作设置为 Content
  • 将复制到输出目录设置为 如果较新则复制(或始终复制,确保文件被打包进APK)

2. 修改NLog初始化代码,确保配置文件被复制到目标路径

修改Android平台的NLog初始化逻辑,先将APK中的配置文件复制到应用的私有Files目录,再加载配置:

#if WINDOWS
builder.Services.AddSingleton<NLog.Logger>(NLog.LogManager.Setup().LogFactory.LoadConfiguration("Windows-NLog.config").GetCurrentClassLogger());
#elif ANDROID
var configFileName = "Android-NLog.config";
var targetConfigPath = Path.Combine(FileSystem.AppDataDirectory, configFileName);

// 仅当目标路径无配置文件时,从APK资源复制
if (!File.Exists(targetConfigPath))
{
    using var assetStream = Microsoft.Maui.ApplicationModel.Platform.CurrentActivity.Assets.Open(configFileName);
    using var fileStream = File.Create(targetConfigPath);
    await assetStream.CopyToAsync(fileStream);
}

var logger = NLog.LogManager.Setup().LogFactory.LoadConfiguration(targetConfigPath).GetCurrentClassLogger();
builder.Services.AddSingleton<NLog.Logger>(logger);
#else
// 其他平台配置
#endif

关键说明

  • FileSystem.AppDataDirectory对应Android系统中应用的私有Files目录,也就是NLog默认搜索的路径/data/user/0/com.companyname.starter/files/
  • 复制逻辑只在首次启动时执行,避免重复操作
  • 若将Android-NLog.config放在Platforms/Android/Assets目录下,需将生成操作改为AndroidAsset,代码中的Assets.Open路径保持不变即可

内容的提问来源于stack exchange,提问作者Igor Markiv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 21:33:08