Xamarin Forms UWP项目读取AppSettings.txt报文件未找到问题排查
嘿,我来帮你搞定UWP项目里读取AppSettings.txt的问题!你Android端能正常读取,但UWP老是报找不到文件,核心原因是UWP的文件访问机制和路径处理逻辑和Android完全不一样,咱们一步步来解决:
一、文件放置的正确位置
建议把AppSettings.txt放在UWP项目的Assets文件夹里,这是UWP官方推荐的资源存放目录,管理起来更规范,也能避免路径混乱。
二、确认Build Action和Copy选项的设置
选中AppSettings.txt,在右侧属性窗口里检查这两项:
- Build Action必须设为
Content(你已经试过,但要确保没选错,有时候右键文件→属性里的设置容易被忽略) - Copy to Output Directory设为
Copy if newer或者Copy always(你选了Always没问题,但建议右键项目→清理→重建一次,确保设置生效)
三、读取代码的关键修正(重点!)
UWP有应用沙箱限制,不能像Android那样直接用File.ReadAllTextAsync这类方法写相对路径,必须用UWP专属的文件访问API。给你两种可靠的实现方式:
方法1:通过应用安装目录获取文件
using Windows.Storage; using System.IO; public async Task<string> ReadAppSettingsAsync() { try { // 获取UWP应用安装目录下的Assets文件夹 StorageFolder assetsFolder = await Package.Current.InstalledLocation.GetFolderAsync("Assets"); // 定位到目标文件 StorageFile settingsFile = await assetsFolder.GetFileAsync("AppSettings.txt"); // 读取文件内容 string content = await FileIO.ReadTextAsync(settingsFile); return content; } catch (Exception ex) { // 这里可以根据需求添加日志或用户提示 throw new Exception("读取配置文件失败:" + ex.Message); } }
方法2:通过应用内URI直接访问
这种方式更简洁,不用逐层找文件夹:
using Windows.Storage; public async Task<string> ReadAppSettingsAsync() { try { // UWP应用内URI格式:ms-appx:///[文件夹]/[文件名] Uri fileUri = new Uri("ms-appx:///Assets/AppSettings.txt"); StorageFile settingsFile = await StorageFile.GetFileFromApplicationUriAsync(fileUri); string content = await FileIO.ReadTextAsync(settingsFile); return content; } catch (Exception ex) { throw new Exception("读取配置文件失败:" + ex.Message); } }
四、常见坑点排查
- 绝对不要用
File类的方法直接读取!UWP沙箱会阻止这种跨权限的访问,必须用Windows.Storage命名空间下的API。 - 检查文件名和路径的拼写,UWP的文件系统是区分大小写的,比如
appsettings.txt和AppSettings.txt会被识别成两个不同的文件。 - 如果之前把文件放在项目根目录,对应的URI是
ms-appx:///AppSettings.txt,但还是推荐统一放在Assets文件夹里,便于维护。
内容的提问来源于stack exchange,提问作者Coskun Ozogul
相关产品推荐
相关产品推荐

