在.net MAUI中使用此代码时,我无法将目录设置为AppData/Roaming:
RootLocation = new DirectoryInfo(GetFolderPath(SpecialFolder.ApplicationData) + "/MyApp");
SaveLocation = new DirectoryInfo(RootLocation.FullName + "/saves");
SaveLocation.Create();
BackupLocation = new DirectoryInfo(RootLocation.FullName + "/backups");
BackupLocation.Create();
但是,如果我将SpecialFolder.ApplicationData更改为SpecialFolder.Desktop,它在Desktop上确实可以工作。这似乎是一个权限问题,但在Visual Studio 2019中使用WPF,我仍然可以保存到AppData/Roaming。这可能是Visual Studio 2022 Preview的问题吗?
2条答案
按热度按时间zmeyuzjn1#
我觉得会更好。而且代码在我的桌面和我的安卓应用上都能正常运行
ykejflvf2#
默认情况下,Maui应用程序不允许在正常位置访问
SpecialFolder.ApplicationData
。这是因为应用程序虚拟化和容器化。Maui在Windows上编译为WinUI 3 appx/msix。它配置了特殊的“file system virtualization”,可以更改文件的写入位置。特别是,当您尝试写入
C:\Users\username\AppData\Roaming
时,它会写入C:\Users\username\AppData\Local\Packages\package_id\LocalCache\Roaming
或Packages目录中的某个变体。这样做的理由是它允许卸载程序完全删除应用程序的所有资源。幸运的是,可以通过将以下内容添加到项目的
Platforms\Windows\Package.appxmanifest
中来禁用虚拟化: