C++/CX - GetFileAsync 抛出断点错误

C++/CX - GetFileAsync throws breakpoint error

我正在尝试从我的资产文件夹中打开一个 xml 文件,但不幸的是我只能使用 FileOpenPicker 打开我的 xml 文件,这不是最理想的情况,当我必须不断获取我的 xml 文件,当然不能打扰用户。

FileOpenPicker^ openPicker = ref new FileOpenPicker();
openPicker->ViewMode = PickerViewMode::List;
openPicker->SuggestedStartLocation = PickerLocationId::Desktop;
openPicker->FileTypeFilter->Append(".xml"); 

task<StorageFile^>(
    openPicker->PickSingleFileAsync()).then([this](StorageFile^ file) {
    if (nullptr != file) {
        task<Streams::IRandomAccessStream^>(file->OpenAsync(FileAccessMode::Read)).then([this](Streams::IRandomAccessStream^ stream) 
        {
            IInputStream^ deInputStream = stream->GetInputStreamAt(0);
            DataReader^ reader = ref new DataReader(deInputStream);
            reader->LoadAsync(stream->Size);
            String^ strXml = reader->ReadString(stream->Size);
        });
    }
});

我现在正在尝试将此代码重构为加载我的 xml 文件而不让用户选择的代码。我尝试了以下方法:

String^ xmlFile = "Assets\MyXmlFile.xml";
StorageFolder^ InstallationFolder = Windows::ApplicationModel::Package::Current->InstalledLocation;
task<StorageFile^>(
InstallationFolder->GetFileAsync(xmlFile)).then([this](StorageFile^ file) {
    if (nullptr != file) {
        task<Streams::IRandomAccessStream^>(file->OpenAsync(FileAccessMode::Read)).then([this](Streams::IRandomAccessStream^ stream) 
        {
            IInputStream^ deInputStream = stream->GetInputStreamAt(0);
            DataReader^ reader = ref new DataReader(deInputStream);
            reader->LoadAsync(stream->Size);
            String^ strXml = reader->ReadString(stream->Size);
            stream->FlushAsync();

        });
    }
});

我想我在 GetFileAsync 中遇到了我无法解决的错误,我请求你,社区尝试帮助我。

我对你的代码进行了一次修改:xmlFile 字符串包含一个需要转义的反斜杠:

String^ xmlFile = "Assets\MyXmlFile.xml";

另请注意,如果您只是在项目中右键单击 "Assets" 并选择 "Add new item",则该项目可能最终位于您的根项目文件夹中(默认情况下)。如果您希望将其部署到 Assets 子文件夹,则它需要实际存在于磁盘上的 assets 子目录中,而不仅仅是在 Assets 过滤器中。 (与 C# 不同,C++ 项目 "folders" 实际上是过滤器,不反映物理目录位置。)