首页 > 解决方案 > Windows 应用程序打包项目的 Windows 存储错误

问题描述

我将空白 UWP 项目打包到 Windows 应用程序打包项目中。

这两个项目都有:

在此处输入图像描述

我在App.xaml.cs中编写了一个简单的代码来创建设置值

using Windows.Storage;
...
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
    ApplicationDataContainer Sett = ApplicationData.Current.LocalSettings;
    if (Sett.Values["test"] == null)
        {
            Sett.Values["test"] = true;
        }
    // Sett.Values["test"] = true; // Also causes an error
    ...
}

当我运行 TestPkg(x86 调试)时,我在调试控制台中收到此消息

onecoreuap\base\appmodel\statemanager\winrt\lib\windows.storage.applicationdatafactory.server.cpp(235)\Windows.Storage.ApplicationData.dll!7B6D1391: (caller: 05769996) ReturnHr(1) tid(546c) 8000000B The operation attempted to access data outside the valid range
Msg:[User XXX]

正确保存的值我可以毫无问题地读取它。仅当您将 UWP 打包到 Windows 应用程序打包项目时才会出现该错误。

我还在这两种情况下都使用 windows.fullTrustProcess (UWP + WPF) 进行了尝试。在这两种情况下,行为都是相似的。

我怎样才能解决这个问题?来源:https ://github.com/steam3d/Windows.Storage.Error

标签: c#uwppackaging

解决方案


将 WinUI 3 Preview 3 与打包在 MSIX 中的桌面应用程序一起使用时,我遇到了类似的错误。

就我而言,异常发生在启动期间的某个时间。我确实有访问 Windows.Storage.ApplicationData 的代码。

我在调试器中看到的异常在下面复制了一个源代码行。

onecoreuap\base\appmodel\statemanager\winrt\lib\windows.storage.applicationdatafactory.server.cpp(235)\Windows.Storage.ApplicationData.dll!16891391: (调用者: 0E7F9FB1) ReturnHr(1) tid(33bc) 8000000B操作试图访问有效范围之外的数据 Msg:[User S-1-5-21-3122765350-3099923779-1351685958-1002] 在 Q5U.exe 中的 0x7679A892 (KernelBase.dll) 处引发异常:0x40080202:WinRT 转换错误(参数:0x8000000B、0x80070490、0x00000014、0x005BE3F4)。OnLaunched(种类=启动)


推荐阅读